1.1 --- a/README-builds.html Thu Feb 21 14:16:56 2013 +0100 1.2 +++ b/README-builds.html Sat Feb 23 10:47:01 2013 -0800 1.3 @@ -3,14 +3,15 @@ 1.4 <head> 1.5 <title>OpenJDK Build README</title> 1.6 </head> 1.7 - <body style="background-color:lightcyan"> 1.8 + <body style="background-color:aquamarine"> 1.9 + 1.10 <!-- ====================================================== --> 1.11 <table width="100%"> 1.12 <tr> 1.13 <td align="center"> 1.14 <img alt="OpenJDK" 1.15 src="http://openjdk.java.net/images/openjdk.png" 1.16 - width=256 /> 1.17 + width=256> 1.18 </td> 1.19 </tr> 1.20 <tr> 1.21 @@ -19,109 +20,116 @@ 1.22 </td> 1.23 </tr> 1.24 </table> 1.25 - <!-- ------------------------------------------------------ --> 1.26 + 1.27 + <!-- ====================================================== --> 1.28 <hr> 1.29 <h2><a name="introduction">Introduction</a></h2> 1.30 <blockquote> 1.31 - <p> 1.32 - This README file contains build instructions for the 1.33 - <a href="http://openjdk.java.net" target="_blank">OpenJDK</a>. 1.34 - Building the source code for the 1.35 - OpenJDK 1.36 - requires 1.37 - a certain degree of technical expertise. 1.38 + This README file contains build instructions for the 1.39 + <a href="http://openjdk.java.net" target="_blank">OpenJDK</a>. 1.40 + Building the source code for the 1.41 + OpenJDK 1.42 + requires 1.43 + a certain degree of technical expertise. 1.44 + 1.45 + <!-- ====================================================== --> 1.46 + <h3>!!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!</h3> 1.47 + <blockquote> 1.48 + Some Headlines: 1.49 + <ul> 1.50 + <li> 1.51 + The build is now a "<code>configure && make</code>" style build 1.52 + </li> 1.53 + <li> 1.54 + Any GNU make 3.81 or newer should work 1.55 + </li> 1.56 + <li> 1.57 + The build should scale, i.e. more processors should 1.58 + cause the build to be done in less wall-clock time 1.59 + </li> 1.60 + <li> 1.61 + Nested or recursive make invocations have been significantly 1.62 + reduced, as has the total fork/exec or spawning 1.63 + of sub processes during the build 1.64 + </li> 1.65 + <li> 1.66 + Windows MKS usage is no longer supported 1.67 + </li> 1.68 + <li> 1.69 + Windows Visual Studio <code>vsvars*.bat</code> and 1.70 + <code>vcvars*.bat</code> files are run automatically 1.71 + </li> 1.72 + <li> 1.73 + Ant is no longer used when building the OpenJDK 1.74 + </li> 1.75 + <li> 1.76 + Use of ALT_* environment variables for configuring the 1.77 + build is no longer supported 1.78 + </li> 1.79 + </ul> 1.80 + </blockquote> 1.81 </blockquote> 1.82 - <!-- ------------------------------------------------------ --> 1.83 + 1.84 + <!-- ====================================================== --> 1.85 <hr> 1.86 <h2><a name="contents">Contents</a></h2> 1.87 <blockquote> 1.88 <ul> 1.89 <li><a href="#introduction">Introduction</a></li> 1.90 + 1.91 <li><a href="#hg">Use of Mercurial</a> 1.92 <ul> 1.93 <li><a href="#get_source">Getting the Source</a></li> 1.94 + <li><a href="#repositories">Repositories</a></li> 1.95 </ul> 1.96 </li> 1.97 - <li><a href="#MBE">Minimum Build Environments</a></li> 1.98 - <li><a href="#SDBE">Specific Developer Build Environments</a> 1.99 + 1.100 + <li><a href="#building">Building</a> 1.101 <ul> 1.102 - <li><a href="#fedora">Fedora Linux</a> </li> 1.103 - <li><a href="#centos">CentOS Linux</a> </li> 1.104 - <li><a href="#debian">Debian GNU/Linux</a></li> 1.105 - <li><a href="#ubuntu">Ubuntu Linux</a> </li> 1.106 - <li><a href="#opensuse">OpenSUSE</a></li> 1.107 - <li><a href="#mandriva">Mandriva</a></li> 1.108 - <li><a href="#opensolaris">OpenSolaris</a></li> 1.109 + <li><a href="#setup">System Setup</a> 1.110 + <ul> 1.111 + <li><a href="#linux">Linux</a></li> 1.112 + <li><a href="#solaris">Solaris</a></li> 1.113 + <li><a href="#macosx">Mac OS X</a></li> 1.114 + <li><a href="#windows">Windows</a></li> 1.115 + </ul> 1.116 + </li> 1.117 + <li><a href="#configure">Configure</a></li> 1.118 + <li><a href="#make">Make</a></li> 1.119 </ul> 1.120 </li> 1.121 - <li><a href="#directories">Source Directory Structure</a> 1.122 + <li><a href="#testing">Testing</a></li> 1.123 + </ul> 1.124 + <hr> 1.125 + <ul> 1.126 + <li><a href="#hints">Appendix A: Hints and Tips</a> 1.127 <ul> 1.128 - <li><a href="#drops">Managing the Source Drops</a></li> 1.129 + <li><a href="#faq">FAQ</a></li> 1.130 + <li><a href="#performance">Build Performance Tips</a></li> 1.131 + <li><a href="#troubleshooting">Troubleshooting</a></li> 1.132 </ul> 1.133 </li> 1.134 - <li><a href="#building">Build Information</a> 1.135 - <ul> 1.136 - <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li> 1.137 - <li><a href="#linux">Basic Linux System Setup</a> </li> 1.138 - <li><a href="#solaris">Basic Solaris System Setup</a> </li> 1.139 - <li><a href="#windows">Basic Windows System Setup</a> </li> 1.140 - <li><a href="#macosx">Basic Mac OS X System Setup</a></li> 1.141 - <li><a href="#dependencies">Build Dependencies</a> 1.142 - <ul> 1.143 - <li><a href="#bootjdk">Bootstrap JDK</a> </li> 1.144 - <li><a href="#importjdk">Optional Import JDK</a> </li> 1.145 - <li><a href="#ant">Ant 1.7.1</a> </li> 1.146 - <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li> 1.147 - <li><a href="#compilers">Compilers</a> 1.148 - <ul> 1.149 - <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li> 1.150 - <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li> 1.151 - <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li> 1.152 - <li><a href="#gcc">Linux gcc/binutils</a> </li> 1.153 - <li><a href="#studio">Sun Studio</a> </li> 1.154 - </ul> 1.155 - </li> 1.156 - <li><a href="#zip">Zip and Unzip</a> </li> 1.157 - <li><a href="#freetype">FreeType2 Fonts</a> </li> 1.158 - <li>Linux and Solaris: 1.159 - <ul> 1.160 - <li><a href="#cups">CUPS Include files</a> </li> 1.161 - <li><a href="#xrender">XRender Include files</a></li> 1.162 - </ul> 1.163 - </li> 1.164 - <li>Linux only: 1.165 - <ul> 1.166 - <li><a href="#alsa">ALSA files</a> </li> 1.167 - </ul> 1.168 - </li> 1.169 - <li>Windows only: 1.170 - <ul> 1.171 - <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>) <strong>or</strong></li> 1.172 - <li>Minimalist GNU for Windows (<a href="#msys">MinGW/MSYS</a>)</li> 1.173 - <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li> 1.174 - </ul> 1.175 - </li> 1.176 - </ul> 1.177 - </li> 1.178 - </ul> 1.179 - </li> 1.180 - <li><a href="#creating">Creating the Build</a> </li> 1.181 - <li><a href="#testing">Testing the Build</a> </li> 1.182 - <li><a href="#variables">Environment/Make Variables</a></li> 1.183 - <li><a href="#troubleshooting">Troubleshooting</a></li> 1.184 - <li><a href="#newbuild">The New Build</a></li> 1.185 + <li><a href="#gmake">Appendix B: GNU Make Information</a></li> 1.186 + <li><a href="#buildenvironments">Appendix C: Build Environments</a></li> 1.187 + 1.188 + <!-- Leave out 1.189 + <li><a href="#mapping">Appendix D: Mapping Old Builds to the New Builds</a></li> 1.190 + --> 1.191 + 1.192 </ul> 1.193 </blockquote> 1.194 1.195 - <!-- ------------------------------------------------------ --> 1.196 + <!-- ====================================================== --> 1.197 <hr> 1.198 <h2><a name="hg">Use of Mercurial</a></h2> 1.199 <blockquote> 1.200 The OpenJDK sources are maintained with the revision control system 1.201 <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>. 1.202 If you are new to Mercurial, please see the 1.203 - <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a> 1.204 - or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>. 1.205 + <a href="http://mercurial.selenic.com/wiki/BeginnersGuides"> 1.206 + Beginner Guides</a> 1.207 + or refer to the <a href="http://hgbook.red-bean.com/"> 1.208 + Mercurial Book</a>. 1.209 The first few chapters of the book provide an excellent overview of 1.210 Mercurial, what it is and how it works. 1.211 <br> 1.212 @@ -130,578 +138,1631 @@ 1.213 Developer Guide: Installing and Configuring Mercurial</a> 1.214 section for more information. 1.215 1.216 - <!-- ------------------------------------------------------ --> 1.217 <h3><a name="get_source">Getting the Source</a></h3> 1.218 <blockquote> 1.219 To get the entire set of OpenJDK Mercurial repositories 1.220 - use the script <code>get_source.sh</code> located in the root repository: 1.221 + use the script <code>get_source.sh</code> located in the 1.222 + root repository: 1.223 <blockquote> 1.224 - <tt> 1.225 - hg clone http://hg.openjdk.java.net/jdk8/jdk8 <i>YourOpenJDK</i> 1.226 - <br>cd <i>YourOpenJDK</i> 1.227 - <br>sh ./get_source.sh 1.228 - </tt> 1.229 + <code> 1.230 + hg clone http://hg.openjdk.java.net/jdk8/jdk8 1.231 + <i>YourOpenJDK</i> 1.232 + <br> 1.233 + cd <i>YourOpenJDK</i> 1.234 + <br> 1.235 + bash ./get_source.sh 1.236 + </code> 1.237 </blockquote> 1.238 - Once you have all the repositories, the 1.239 - script <tt>make/scripts/hgforest.sh</tt> 1.240 - can be used to repeat the same <tt>hg</tt> 1.241 - command on every repository in the forest, e.g. 1.242 + Once you have all the repositories, keep in mind that each 1.243 + repository is it's own independent repository. 1.244 + You can also re-run <code>./get_source.sh</code> anytime to 1.245 + pull over all the latest changesets in all the repositories. 1.246 + This set of nested repositories has been given the term 1.247 + "forest" and there are various ways to apply the same 1.248 + <code>hg</code> command to each of the repositories. 1.249 + For example, the script <code>make/scripts/hgforest.sh</code> 1.250 + can be used to repeat the same <code>hg</code> 1.251 + command on every repository, e.g. 1.252 <blockquote> 1.253 - <tt> 1.254 + <code> 1.255 cd <i>YourOpenJDK</i> 1.256 - <br>sh ./make/scripts/hgforest.sh pull -u 1.257 - </tt> 1.258 + <br> 1.259 + bash ./make/scripts/hgforest.sh status 1.260 + </code> 1.261 </blockquote> 1.262 </blockquote> 1.263 1.264 + <h3><a name="repositories">Repositories</a></h3> 1.265 + <blockquote> 1.266 + <p>The set of repositories and what they contain:</p> 1.267 + <table border="1"> 1.268 + <thead> 1.269 + <tr> 1.270 + <th>Repository</th> 1.271 + <th>Contains</th> 1.272 + </tr> 1.273 + </thead> 1.274 + <tbody> 1.275 + <tr> 1.276 + <td> 1.277 + . (root) 1.278 + </td> 1.279 + <td> 1.280 + common configure and makefile logic 1.281 + </td> 1.282 + </tr> 1.283 + <tr> 1.284 + <td> 1.285 + hotspot 1.286 + </td> 1.287 + <td> 1.288 + source code and make files for building 1.289 + the OpenJDK Hotspot Virtual Machine 1.290 + </td> 1.291 + </tr> 1.292 + <tr> 1.293 + <td> 1.294 + langtools 1.295 + </td> 1.296 + <td> 1.297 + source code for the OpenJDK javac and language tools 1.298 + </td> 1.299 + </tr> 1.300 + <tr> 1.301 + <td> 1.302 + jdk 1.303 + </td> 1.304 + <td> 1.305 + source code and make files for building 1.306 + the OpenJDK runtime libraries and misc files 1.307 + </td> 1.308 + </tr> 1.309 + <tr> 1.310 + <td> 1.311 + jaxp 1.312 + </td> 1.313 + <td> 1.314 + source code for the OpenJDK JAXP functionality 1.315 + </td> 1.316 + </tr> 1.317 + <tr> 1.318 + <td> 1.319 + jaxws 1.320 + </td> 1.321 + <td> 1.322 + source code for the OpenJDK JAX-WS functionality 1.323 + </td> 1.324 + </tr> 1.325 + <tr> 1.326 + <td> 1.327 + corba 1.328 + </td> 1.329 + <td> 1.330 + source code for the OpenJDK Corba functionality 1.331 + </td> 1.332 + </tr> 1.333 + </tbody> 1.334 + </table> 1.335 + </blockquote> 1.336 + 1.337 + <h3><a name="guidelines">Repository Source Guidelines</a></h3> 1.338 + <blockquote> 1.339 + There are some very basic guidelines: 1.340 + <ul> 1.341 + <li> 1.342 + Use of whitespace in source files 1.343 + (.java, .c, .h, .cpp, and .hpp files) 1.344 + is restricted. 1.345 + No TABs, no trailing whitespace on lines, and files 1.346 + should not terminate in more than one blank line. 1.347 + </li> 1.348 + <li> 1.349 + Files with execute permissions should not be added 1.350 + to the source repositories. 1.351 + </li> 1.352 + <li> 1.353 + All generated files need to be kept isolated from 1.354 + the files 1.355 + maintained or managed by the source control system. 1.356 + The standard area for generated files is the top level 1.357 + <code>build/</code> directory. 1.358 + </li> 1.359 + <li> 1.360 + The default build process should be to build the product 1.361 + and nothing else, in one form, e.g. a product (optimized), 1.362 + debug (non-optimized, -g plus assert logic), or 1.363 + fastdebug (optimized, -g plus assert logic). 1.364 + </li> 1.365 + <li> 1.366 + The <tt>.hgignore</tt> file in each repository 1.367 + must exist and should 1.368 + include <tt>^build/</tt>, <tt>^dist/</tt> and 1.369 + optionally any 1.370 + <tt>nbproject/private</tt> directories. 1.371 + <strong>It should NEVER</strong> include 1.372 + anything in the 1.373 + <tt>src/</tt> or <tt>test/</tt> 1.374 + or any managed directory area of a repository. 1.375 + </li> 1.376 + <li> 1.377 + Directory names and file names should never contain 1.378 + blanks or 1.379 + non-printing characters. 1.380 + </li> 1.381 + <li> 1.382 + Generated source or binary files should NEVER be added to 1.383 + the repository (that includes <tt>javah</tt> output). 1.384 + There are some exceptions to this rule, in particular 1.385 + with some of the generated configure scripts. 1.386 + </li> 1.387 + <li> 1.388 + Files not needed for typical building 1.389 + or testing of the repository 1.390 + should not be added to the repository. 1.391 + </li> 1.392 + </ul> 1.393 + </blockquote> 1.394 + 1.395 </blockquote> 1.396 1.397 - <!-- ------------------------------------------------------ --> 1.398 + <!-- ====================================================== --> 1.399 <hr> 1.400 - <h2><a name="MBE">Minimum Build Environments</a></h2> 1.401 + <h2><a name="building">Building</a></h2> 1.402 <blockquote> 1.403 - This file often describes specific requirements for what we call the 1.404 - "minimum build environments" (MBE) for this 1.405 - specific release of the JDK, 1.406 - Building with the MBE will generate the most compatible 1.407 - bits that install on, and run correctly on, the most variations 1.408 - of the same base OS and hardware architecture. 1.409 - These usually represent what is often called the 1.410 - least common denominator platforms. 1.411 - It is understood that most developers will NOT be using these 1.412 - specific platforms, and in fact creating these specific platforms 1.413 - may be difficult due to the age of some of this software. 1.414 - <p> 1.415 - The minimum OS and C/C++ compiler versions needed for building the 1.416 - OpenJDK: 1.417 - <p> 1.418 - <table border="1"> 1.419 - <thead> 1.420 - <tr> 1.421 - <th>Base OS and Architecture</th> 1.422 - <th>OS</th> 1.423 - <th>C/C++ Compiler</th> 1.424 - <th>BOOT JDK</th> 1.425 - </tr> 1.426 - </thead> 1.427 - <tbody> 1.428 - <tr> 1.429 - <td>Linux X86 (32-bit)</td> 1.430 - <td>Fedora 9</td> 1.431 - <td>gcc 4.3 </td> 1.432 - <td>JDK 6u18</td> 1.433 - </tr> 1.434 - <tr> 1.435 - <td>Linux X64 (64-bit)</td> 1.436 - <td>Fedora 9</td> 1.437 - <td>gcc 4.3 </td> 1.438 - <td>JDK 6u18</td> 1.439 - </tr> 1.440 - <tr> 1.441 - <td>Solaris SPARC (32-bit)</td> 1.442 - <td>Solaris 10 Update 6</td> 1.443 - <td>Sun Studio 12 Update 1 + patches</td> 1.444 - <td>JDK 6u18</td> 1.445 - </tr> 1.446 - <tr> 1.447 - <td>Solaris SPARCV9 (64-bit)</td> 1.448 - <td>Solaris 10 Update 6</td> 1.449 - <td>Sun Studio 12 Update 1 + patches</td> 1.450 - <td>JDK 6u18</td> 1.451 - </tr> 1.452 - <tr> 1.453 - <td>Solaris X86 (32-bit)</td> 1.454 - <td>Solaris 10 Update 6</td> 1.455 - <td>Sun Studio 12 Update 1 + patches</td> 1.456 - <td>JDK 6u18</td> 1.457 - </tr> 1.458 - <tr> 1.459 - <td>Solaris X64 (64-bit)</td> 1.460 - <td>Solaris 10 Update 6</td> 1.461 - <td>Sun Studio 12 Update 1 + patches</td> 1.462 - <td>JDK 6u18</td> 1.463 - </tr> 1.464 - <tr> 1.465 - <td>Windows X86 (32-bit)</td> 1.466 - <td>Windows XP</td> 1.467 - <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> 1.468 - <td>JDK 6u18</td> 1.469 - </tr> 1.470 - <tr> 1.471 - <td>Windows X64 (64-bit)</td> 1.472 - <td>Windows Server 2003 - Enterprise x64 Edition</td> 1.473 - <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> 1.474 - <td>JDK 6u18</td> 1.475 - </tr> 1.476 - <tr> 1.477 - <td>Mac OS X X64 (64-bit)</td> 1.478 - <td>Mac OS X 10.7.3 "Lion"</td> 1.479 - <td>XCode 4.1 or later</td> 1.480 - <td>Java for OS X Lion Update 1</td> 1.481 - </tr> 1.482 - </tbody> 1.483 - </table> 1.484 - <p> 1.485 - These same sources do indeed build on many more systems than the 1.486 - above older generation systems, again the above is just a minimum. 1.487 - <p> 1.488 - Compilation problems with newer or different C/C++ compilers is a 1.489 - common problem. 1.490 - Similarly, compilation problems related to changes to the 1.491 - <tt>/usr/include</tt> or system header files is also a 1.492 - common problem with newer or unreleased OS versions. 1.493 - Please report these types of problems as bugs so that they 1.494 - can be dealt with accordingly. 1.495 - </blockquote> 1.496 - <!-- ------------------------------------------------------ --> 1.497 - <hr> 1.498 - <h2><a name="SDBE">Specific Developer Build Environments</a></h2> 1.499 - <blockquote> 1.500 - We won't be listing all the possible environments, but 1.501 - we will try to provide what information we have available to us. 1.502 - </blockquote> 1.503 - <!-- ------------------------------------------------------ --> 1.504 - <h3><a name="fedora">Fedora</a></h3> 1.505 - <blockquote> 1.506 - <h4>Fedora 9</h4> 1.507 - <p> 1.508 + The very first step in building the OpenJDK is making sure the 1.509 + system itself has everything it needs to do OpenJDK builds. 1.510 + Once a system is setup, it generally doesn't need to be done again. 1.511 + <br> 1.512 + Building the OpenJDK is now done with running a 1.513 + <a href="#configure"><code>configure</code></a> 1.514 + script which will try and find and verify you have everything 1.515 + you need, followed by running 1.516 + <a href="#gmake"><code>make</code></a>, e.g. 1.517 <blockquote> 1.518 - After installing <a href="http://fedoraproject.org">Fedora</a> 9 1.519 - you need to install several build dependencies. The simplest 1.520 - way to do it is to execute the following commands as user 1.521 - <tt>root</tt>: 1.522 - <p/> 1.523 - <code>yum-builddep java-1.6.0-openjdk</code> 1.524 - <p/> 1.525 - <code>yum install gcc gcc-c++</code> 1.526 - <p/> 1.527 - In addition, it's necessary to set a few environment variables for the build: 1.528 + <b> 1.529 + <code> 1.530 + bash ./configure<br> 1.531 + make all 1.532 + </code> 1.533 + </b> 1.534 + </blockquote> 1.535 + Where possible the <code>configure</code> script will attempt to located the 1.536 + various components in the default locations or via component 1.537 + specific variable settings. 1.538 + When the normal defaults fail or components cannot be found, 1.539 + additional <code>configure</code> options may be necessary to help <code>configure</code> 1.540 + find the necessary tools for the build, or you may need to 1.541 + re-visit the setup of your system due to missing software 1.542 + packages. 1.543 + <br> 1.544 + <strong>NOTE:</strong> The <code>configure</code> script 1.545 + file does not have 1.546 + execute permissions and will need to be explicitly run with 1.547 + <code>bash</code>, 1.548 + see the <a href="#guidelines">source guidelines</a>. 1.549 1.550 - <p/> 1.551 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> 1.552 + <!-- ====================================================== --> 1.553 + <hr> 1.554 + <h3><a name="setup">System Setup</a></h3> 1.555 + <blockquote> 1.556 + Before even attempting to use a system to build the OpenJDK 1.557 + there are some very basic system setups needed. 1.558 + For all systems: 1.559 + <ul> 1.560 + <li> 1.561 + Be sure the GNU make utility is version 3.81 or newer, 1.562 + e.g. run "<code>make -version</code>" 1.563 + </li> 1.564 + <li> 1.565 + Install a 1.566 + <a name="bootjdk">Bootstrap JDK</a> 1.567 + <br> 1.568 + All OpenJDK builds require access to a previously released 1.569 + JDK, this is often called a bootstrap JDK. 1.570 + Currently, for this JDK release we require 1.571 + JDK 7 Update 7 or newer. 1.572 + The JDK 7 binaries can be downloaded from Oracle's 1.573 + <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" 1.574 + target="_blank">JDK 7 download site</a>. 1.575 + For build performance reasons 1.576 + is very important that this bootstrap JDK be made available 1.577 + on the local disk of the machine doing the build. 1.578 + You should add its <code>bin</code> directory 1.579 + to the <code>PATH</code> environment variable. 1.580 + If <code>configure</code> has any issues finding this JDK, you may 1.581 + need to use the <code>configure</code> option 1.582 + <code>--with-boot-jdk</code>. 1.583 + </li> 1.584 + <li> 1.585 + Insure that GNU make, the Bootstrap JDK, 1.586 + and the compilers are all 1.587 + in your PATH environment variable 1.588 + </li> 1.589 + </ul> 1.590 + And for specific systems: 1.591 + <table border="1"> 1.592 + <thead> 1.593 + <tr> 1.594 + <th>Linux</th> 1.595 + <th>Solaris</th> 1.596 + <th>Windows</th> 1.597 + <th>Mac OS X</th> 1.598 + </tr> 1.599 + </thead> 1.600 + <tbody> 1.601 + <tr> 1.602 + <td> 1.603 + Install all the software development 1.604 + packages needed including 1.605 + <a href="#alsa">alsa</a>, 1.606 + <a href="#freetype">freetype</a>, 1.607 + <a href="#cups">cups</a>, and 1.608 + <a href="#xrender">xrender</a>. 1.609 + <br> 1.610 + See 1.611 + <a href="#SDBE">specific system packages</a>. 1.612 + </td> 1.613 + <td> 1.614 + Install all the software development 1.615 + packages needed including 1.616 + <a href="#studio">Studio Compilers</a>, 1.617 + <a href="#freetype">freetype</a>, 1.618 + <a href="#cups">cups</a>, and 1.619 + <a href="#xrender">xrender</a>. 1.620 + <br> 1.621 + See 1.622 + <a href="#SDBE">specific system packages</a>. 1.623 + </td> 1.624 + <td> 1.625 + <ul> 1.626 + <li> 1.627 + Install one of 1.628 + <a href="#cygwin">CYGWIN</a> or 1.629 + <a href="#msys">MinGW/MSYS</a> 1.630 + </li> 1.631 + <li> 1.632 + Install 1.633 + <a href="#vs2010">Visual Studio 2010</a> 1.634 + </li> 1.635 + <li> 1.636 + Install the 1.637 + <a href="#dxsdk">Microsoft DirectX SDK</a> 1.638 + </li> 1.639 + </ul> 1.640 + </td> 1.641 + <td> 1.642 + Install 1.643 + <a href="https://developer.apple.com/xcode/">XCode 4.5.2</a> 1.644 + and also install the "Command line tools" found under the 1.645 + preferences pane "Downloads" 1.646 + </td> 1.647 + </tr> 1.648 + </tbody> 1.649 + </table> 1.650 + 1.651 + <h4><a name="linux">Linux</a></h4> 1.652 + <blockquote> 1.653 + With Linux, try and favor the system packages over 1.654 + building your own 1.655 + or getting packages from other areas. 1.656 + Most Linux builds should be possible with the system's 1.657 + available packages. 1.658 + <br> 1.659 + Note that some Linux systems have a habit of pre-populating 1.660 + your environment variables for you, for example <code>JAVA_HOME</code> 1.661 + might get pre-defined for you to refer to the JDK installed on 1.662 + your Linux system. 1.663 + You will need to unset <code>JAVA_HOME</code>. 1.664 + It's a good idea to run <code>env</code> and verify the 1.665 + environment variables you are getting from the default system 1.666 + settings make sense for building the OpenJDK. 1.667 + 1.668 + </blockquote> 1.669 + 1.670 + <h4><a name="solaris">Solaris</a></h4> 1.671 + <blockquote> 1.672 + <h5><a name="studio">Studio Compilers</a></h5> 1.673 + <blockquote> 1.674 + At a minimum, the 1.675 + <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank"> 1.676 + Studio 12 Update 1 Compilers</a> 1.677 + (containing version 5.10 of the C and C++ compilers) is required, 1.678 + including specific patches. 1.679 + <p> 1.680 + The Solaris SPARC patch list is: 1.681 + <ul> 1.682 + <li> 1.683 + 118683-05: SunOS 5.10: Patch for profiling libraries and assembler 1.684 + </li> 1.685 + <li> 1.686 + 119963-21: SunOS 5.10: Shared library patch for C++ 1.687 + </li> 1.688 + <li> 1.689 + 120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch 1.690 + </li> 1.691 + <li> 1.692 + 128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler 1.693 + </li> 1.694 + <li> 1.695 + 141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95 1.696 + </li> 1.697 + <li> 1.698 + 141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler 1.699 + </li> 1.700 + <li> 1.701 + 142371-01: Sun Studio 12.1 Update 1: Patch for dbx 1.702 + </li> 1.703 + <li> 1.704 + 143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling 1.705 + </li> 1.706 + <li> 1.707 + 143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95 1.708 + </li> 1.709 + <li> 1.710 + 142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools 1.711 + </li> 1.712 + </ul> 1.713 + <p> 1.714 + The Solaris X86 patch list is: 1.715 + <ul> 1.716 + <li> 1.717 + 119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler 1.718 + </li> 1.719 + <li> 1.720 + 119964-21: SunOS 5.10_x86: Shared library patch for C++_x86 1.721 + </li> 1.722 + <li> 1.723 + 120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch 1.724 + </li> 1.725 + <li> 1.726 + 141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend 1.727 + </li> 1.728 + <li> 1.729 + 128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler 1.730 + </li> 1.731 + <li> 1.732 + 142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler 1.733 + </li> 1.734 + <li> 1.735 + 142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools 1.736 + </li> 1.737 + </ul> 1.738 + <p> 1.739 + Place the <code>bin</code> directory in <code>PATH</code>. 1.740 + <p> 1.741 + The Oracle Solaris Studio Express compilers at: 1.742 + <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-142582.html" target="_blank"> 1.743 + Oracle Solaris Studio Express Download site</a> 1.744 + are also an option, although these compilers have not 1.745 + been extensively used yet. 1.746 + </blockquote> 1.747 + 1.748 + </blockquote> <!-- Solaris --> 1.749 + 1.750 + <h4><a name="windows">Windows</a></h4> 1.751 + <blockquote> 1.752 + 1.753 + <h5><a name="toolkit">Windows Unix Toolkit</a></h5> 1.754 + <blockquote> 1.755 + Building on Windows requires a Unix-like environment, notably a 1.756 + Unix-like shell. 1.757 + There are several such environments available of which 1.758 + <a href="http://www.cygwin.com/">Cygwin</a> and 1.759 + <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are 1.760 + currently supported for 1.761 + the OpenJDK build. One of the differences of these 1.762 + systems from standard Windows tools is the way 1.763 + they handle Windows path names, particularly path names which contain 1.764 + spaces, backslashes as path separators and possibly drive letters. 1.765 + Depending 1.766 + on the use case and the specifics of each environment these path 1.767 + problems can 1.768 + be solved by a combination of quoting whole paths, translating 1.769 + backslashes to 1.770 + forward slashes, escaping backslashes with additional backslashes and 1.771 + translating the path names to their 1.772 + <a href="http://en.wikipedia.org/wiki/8.3_filename"> 1.773 + "8.3" version</a>. 1.774 + 1.775 + <h6><a name="cygwin">CYGWIN</a></h6> 1.776 + <blockquote> 1.777 + CYGWIN is an open source, Linux-like environment which tries to emulate 1.778 + a complete POSIX layer on Windows. It tries to be smart about path names 1.779 + and can usually handle all kinds of paths if they are correctly quoted 1.780 + or escaped although internally it maps drive letters <code><drive>:</code> 1.781 + to a virtual directory <code>/cygdrive/<drive></code>. 1.782 + <p> 1.783 + You can always use the <code>cygpath</code> utility to map pathnames with spaces 1.784 + or the backslash character into the <code>C:/</code> style of pathname 1.785 + (called 'mixed'), e.g. <code>cygpath -s -m "<i>path</i>"</code>. 1.786 + </p> 1.787 + <p> 1.788 + Note that the use of CYGWIN creates a unique problem with regards to 1.789 + setting <a href="#path"><code>PATH</code></a>. Normally on Windows 1.790 + the <code>PATH</code> variable contains directories 1.791 + separated with the ";" character (Solaris and Linux use ":"). 1.792 + With CYGWIN, it uses ":", but that means that paths like "C:/path" 1.793 + cannot be placed in the CYGWIN version of <code>PATH</code> and 1.794 + instead CYGWIN uses something like <code>/cygdrive/c/path</code> 1.795 + which CYGWIN understands, but only CYGWIN understands. 1.796 + </p> 1.797 + <p> 1.798 + The OpenJDK build requires CYGWIN version 1.7.16 or newer. 1.799 + Information about CYGWIN can 1.800 + be obtained from the CYGWIN website at 1.801 + <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 1.802 + </p> 1.803 + <p> 1.804 + By default CYGWIN doesn't install all the tools required for building 1.805 + the OpenJDK. 1.806 + Along with the default installation, you need to install 1.807 + the following tools. 1.808 + <blockquote> 1.809 + <table border="1"> 1.810 + <thead> 1.811 + <tr> 1.812 + <td>Binary Name</td> 1.813 + <td>Category</td> 1.814 + <td>Package</td> 1.815 + <td>Description</td> 1.816 + </tr> 1.817 + </thead> 1.818 + <tbody> 1.819 + <tr> 1.820 + <td>ar.exe</td> 1.821 + <td>Devel</td> 1.822 + <td>binutils</td> 1.823 + <td> 1.824 + The GNU assembler, linker and binary utilities 1.825 + </td> 1.826 + </tr> 1.827 + <tr> 1.828 + <td>make.exe</td> 1.829 + <td>Devel</td> 1.830 + <td>make</td> 1.831 + <td> 1.832 + The GNU version of the 'make' utility built for CYGWIN 1.833 + </td> 1.834 + </tr> 1.835 + <tr> 1.836 + <td>m4.exe</td> 1.837 + <td>Interpreters</td> 1.838 + <td>m4</td> 1.839 + <td> 1.840 + GNU implementation of the traditional Unix macro 1.841 + processor 1.842 + </td> 1.843 + </tr> 1.844 + <tr> 1.845 + <td>cpio.exe</td> 1.846 + <td>Utils</td> 1.847 + <td>cpio</td> 1.848 + <td> 1.849 + A program to manage archives of files 1.850 + </td> 1.851 + </tr> 1.852 + <tr> 1.853 + <td>gawk.exe</td> 1.854 + <td>Utils</td> 1.855 + <td>awk</td> 1.856 + <td> 1.857 + Pattern-directed scanning and processing language 1.858 + </td> 1.859 + </tr> 1.860 + <tr> 1.861 + <td>file.exe</td> 1.862 + <td>Utils</td> 1.863 + <td>file</td> 1.864 + <td> 1.865 + Determines file type using 'magic' numbers 1.866 + </td> 1.867 + </tr> 1.868 + <tr> 1.869 + <td>zip.exe</td> 1.870 + <td>Archive</td> 1.871 + <td>zip</td> 1.872 + <td> 1.873 + Package and compress (archive) files 1.874 + </td> 1.875 + </tr> 1.876 + <tr> 1.877 + <td>unzip.exe</td> 1.878 + <td>Archive</td> 1.879 + <td>unzip</td> 1.880 + <td> 1.881 + Extract compressed files in a ZIP archive 1.882 + </td> 1.883 + </tr> 1.884 + <tr> 1.885 + <td>free.exe</td> 1.886 + <td>System</td> 1.887 + <td>procps</td> 1.888 + <td> 1.889 + Display amount of free and used memory in the system 1.890 + </td> 1.891 + </tr> 1.892 + </tbody> 1.893 + </table> 1.894 + </blockquote> 1.895 + Note that the CYGWIN software can conflict with other non-CYGWIN 1.896 + software on your Windows system. 1.897 + CYGWIN provides a 1.898 + <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for 1.899 + known issues and problems, of particular interest is the 1.900 + section on 1.901 + <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> 1.902 + BLODA (applications that interfere with CYGWIN)</a>. 1.903 + </blockquote> 1.904 + 1.905 + <h6><a name="msys">MinGW/MSYS</a></h6> 1.906 + <blockquote> 1.907 + MinGW ("Minimalist GNU for Windows") is a collection of free Windows 1.908 + specific header files and import libraries combined with GNU toolsets that 1.909 + allow one to produce native Windows programs that do not rely on any 1.910 + 3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building 1.911 + applications and programs which rely on traditional UNIX tools to 1.912 + be present. Among others this includes tools like <code>bash</code> 1.913 + and <code>make</code>. 1.914 + See <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a> 1.915 + for more information. 1.916 + <p> 1.917 + Like Cygwin, MinGW/MSYS can handle different types of path formats. They 1.918 + are internally converted to paths with forward slashes and drive letters 1.919 + <code><drive>:</code> replaced by a virtual 1.920 + directory <code>/<drive></code>. Additionally, MSYS automatically 1.921 + detects binaries compiled for the MSYS environment and feeds them with the 1.922 + internal, Unix-style path names. If native Windows applications are called 1.923 + from within MSYS programs their path arguments are automatically converted 1.924 + back to Windows style path names with drive letters and backslashes as 1.925 + path separators. This may cause problems for Windows applications which 1.926 + use forward slashes as parameter separator (e.g. <code>cl /nologo /I</code>) 1.927 + because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion"> 1.928 + replace such parameters by drive letters</a>. 1.929 + </p> 1.930 + <p> 1.931 + In addition to the tools which will be installed 1.932 + by default, you have 1.933 + to manually install the 1.934 + <code>msys-zip</code> and 1.935 + <code>msys-unzip</code> packages. 1.936 + This can be easily done with the MinGW command line installer: 1.937 + <blockquote> 1.938 + <code>mingw-get.exe install msys-zip</code> 1.939 + <br> 1.940 + <code>mingw-get.exe install msys-unzip</code> 1.941 + </blockquote> 1.942 + </blockquote> 1.943 + 1.944 + </blockquote> 1.945 + 1.946 + <h5><a name="vs2010">Visual Studio 2010 Compilers</a></h5> 1.947 + <blockquote> 1.948 + <p> 1.949 + The 32-bit and 64-bit OpenJDK Windows build requires 1.950 + Microsoft Visual Studio C++ 2010 (VS2010) Professional 1.951 + Edition or Express compiler. 1.952 + The compiler and other tools are expected to reside 1.953 + in the location defined by the variable 1.954 + <code>VS100COMNTOOLS</code> which 1.955 + is set by the Microsoft Visual Studio installer. 1.956 + </p> 1.957 + <p> 1.958 + Only the C++ part of VS2010 is needed. 1.959 + Try to let the installation go to the default 1.960 + install directory. 1.961 + Always reboot your system after installing VS2010. 1.962 + The system environment variable VS100COMNTOOLS 1.963 + should be 1.964 + set in your environment. 1.965 + </p> 1.966 + <p> 1.967 + Make sure that TMP and TEMP are also set 1.968 + in the environment 1.969 + and refer to Windows paths that exist, 1.970 + like <code>C:\temp</code>, 1.971 + not <code>/tmp</code>, not <code>/cygdrive/c/temp</code>, 1.972 + and not <code>C:/temp</code>. 1.973 + <code>C:\temp</code> is just an example, 1.974 + it is assumed that this area is 1.975 + private to the user, so by default 1.976 + after installs you should 1.977 + see a unique user path in these variables. 1.978 + </p> 1.979 + </blockquote> 1.980 + 1.981 + 1.982 + </blockquote> <!-- Windows --> 1.983 + 1.984 + <h4><a name="macosx">Mac OS X</a></h4> 1.985 + <blockquote> 1.986 + Make sure you get the right XCode version. 1.987 + </blockquote> <!-- Mac OS X --> 1.988 + 1.989 </blockquote> 1.990 - <h4>Fedora 10</h4> 1.991 - <p> 1.992 + 1.993 + <!-- ====================================================== --> 1.994 + <hr> 1.995 + <h3><a name="configure">Configure</a></h3> 1.996 <blockquote> 1.997 - After installing <a href="http://fedoraproject.org">Fedora</a> 10 1.998 - you need to install several build dependencies. The simplest 1.999 - way to do it is to execute the following commands as user 1.1000 - <tt>root</tt>: 1.1001 - <p/> 1.1002 - <code>yum-builddep java-1.6.0-openjdk</code> 1.1003 - <p/> 1.1004 - <code>yum install gcc gcc-c++</code> 1.1005 - <p/> 1.1006 - In addition, it's necessary to set a few environment variables for the build: 1.1007 + The basic invocation of the <code>configure</code> script 1.1008 + looks like: 1.1009 + <blockquote> 1.1010 + <b><code>bash ./configure [<i>options</i>]</code></b> 1.1011 + </blockquote> 1.1012 + This will create an output directory containing the 1.1013 + "configuration" and setup an area for the build result. 1.1014 + This directory typically looks like: 1.1015 + <blockquote> 1.1016 + <b><code>build/linux-x64-normal-server-release</code></b> 1.1017 + </blockquote> 1.1018 + <code>configure</code> will try to figure out what system you are running on 1.1019 + and where all necessary build components are. 1.1020 + If you have all prerequisites for building installed, 1.1021 + it should find everything. 1.1022 + If it fails to detect any component automatically, 1.1023 + it will exit and inform you about the problem. 1.1024 + When this happens, read more below in 1.1025 + <a href="#configureoptions">the <code>configure</code> options</a>. 1.1026 + <p> 1.1027 + Some examples: 1.1028 + </p> 1.1029 + <table border="1"> 1.1030 + <thead> 1.1031 + <tr> 1.1032 + <th>Description</th> 1.1033 + <th>Configure Command Line</th> 1.1034 + </tr> 1.1035 + </thead> 1.1036 + <tbody> 1.1037 + <tr> 1.1038 + <td>Windows 32bit build with freetype specified</td> 1.1039 + <td> 1.1040 + <code>bash ./configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32</code> 1.1041 + </td> 1.1042 + </tr> 1.1043 + <tr> 1.1044 + <td>Debug 64bit Build</td> 1.1045 + <td> 1.1046 + <code>bash ./configure --enable-debug --with-target-bits=64</code> 1.1047 + </td> 1.1048 + </tr> 1.1049 + </tbody> 1.1050 + </table> 1.1051 1.1052 - <p/> 1.1053 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> 1.1054 + <!-- ====================================================== --> 1.1055 + <h4><a name="configureoptions">Configure Options</a></h4> 1.1056 + <blockquote> 1.1057 + Complete details on all the OpenJDK <code>configure</code> options can 1.1058 + be seen with: 1.1059 + <blockquote> 1.1060 + <b><code>bash ./configure --help=short</code></b> 1.1061 + </blockquote> 1.1062 + Use <code>-help</code> to see all the <code>configure</code> options 1.1063 + available. 1.1064 + 1.1065 + You can generate any number of different configurations, 1.1066 + e.g. debug, release, 32, 64, etc. 1.1067 + 1.1068 + Some of the more commonly used <code>configure</code> options are: 1.1069 + 1.1070 + <table border="1"> 1.1071 + <thead> 1.1072 + <tr> 1.1073 + <th width="300">OpenJDK Configure Option</th> 1.1074 + <th>Description</th> 1.1075 + </tr> 1.1076 + </thead> 1.1077 + <tbody> 1.1078 + <tr> 1.1079 + <td><b><code>--enable-debug</code></b></td> 1.1080 + <td> 1.1081 + set the debug level to fastdebug (this is a shorthand for 1.1082 + <code>--with-debug-level=fastdebug</code>) 1.1083 + </td> 1.1084 + </tr> 1.1085 + <tr> 1.1086 + <td><b><code>--with-alsa=</code></b><i>path</i></td> 1.1087 + <td> 1.1088 + select the location of the 1.1089 + <a name="alsa">Advanced Linux Sound Architecture (ALSA)</a> 1.1090 + <br> 1.1091 + Version 0.9.1 or newer of the ALSA files are 1.1092 + required for building the OpenJDK on Linux. 1.1093 + These Linux files are usually available from an "alsa" 1.1094 + of "libasound" 1.1095 + development package, 1.1096 + and it's highly recommended that you try and use 1.1097 + the package provided by the particular version of Linux that 1.1098 + you are using. 1.1099 + </td> 1.1100 + </tr> 1.1101 + <tr> 1.1102 + <td><b><code>--with-boot-jdk=</code></b><i>path</i></td> 1.1103 + <td> 1.1104 + select the <a href="#bootjdk">Bootstrap JDK</a> 1.1105 + </td> 1.1106 + </tr> 1.1107 + <tr> 1.1108 + <td><b><code>--with-boot-jdk-jvmargs=</code></b>"<i>args</i>"</td> 1.1109 + <td> 1.1110 + provide the JVM options to be used to run the 1.1111 + <a href="#bootjdk">Bootstrap JDK</a> 1.1112 + </td> 1.1113 + </tr> 1.1114 + <tr> 1.1115 + <td><b><code>--with-cacerts=</code></b><i>path</i></td> 1.1116 + <td> 1.1117 + select the path to the cacerts file. 1.1118 + <br> 1.1119 + See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank"> 1.1120 + http://en.wikipedia.org/wiki/Certificate_Authority</a> 1.1121 + for a better understanding of the Certificate Authority (CA). 1.1122 + A certificates file named "cacerts" 1.1123 + represents a system-wide keystore with CA certificates. 1.1124 + In JDK and JRE 1.1125 + binary bundles, the "cacerts" file contains root CA certificates from 1.1126 + several public CAs (e.g., VeriSign, Thawte, and Baltimore). 1.1127 + The source contain a cacerts file 1.1128 + without CA root certificates. 1.1129 + Formal JDK builders will need to secure 1.1130 + permission from each public CA and include the certificates into their 1.1131 + own custom cacerts file. 1.1132 + Failure to provide a populated cacerts file 1.1133 + will result in verification errors of a certificate chain during runtime. 1.1134 + By default an empty cacerts file is provided and that should be 1.1135 + fine for most JDK developers. 1.1136 + </td> 1.1137 + </tr> 1.1138 + <tr> 1.1139 + <td><b><code>--with-cups=</code></b><i>path</i></td> 1.1140 + <td> 1.1141 + select the CUPS install location 1.1142 + <br> 1.1143 + The 1.1144 + <a name="cups">Common UNIX Printing System (CUPS) Headers</a> 1.1145 + are required for building the 1.1146 + OpenJDK on Solaris and Linux. 1.1147 + The Solaris header files can be obtained by installing 1.1148 + the package <strong>SFWcups</strong> from the Solaris Software 1.1149 + Companion CD/DVD, these often will be installed into the 1.1150 + directory <code>/opt/sfw/cups</code>. 1.1151 + <br> 1.1152 + The CUPS header files can always be downloaded from 1.1153 + <a href="http://www.cups.org" target="_blank">www.cups.org</a>. 1.1154 + </td> 1.1155 + </tr> 1.1156 + <tr> 1.1157 + <td><b><code>--with-cups-include=</code></b><i>path</i></td> 1.1158 + <td> 1.1159 + select the CUPS include directory location 1.1160 + </td> 1.1161 + </tr> 1.1162 + <tr> 1.1163 + <td><b><code>--with-debug-level=</code></b><i>level</i></td> 1.1164 + <td> 1.1165 + select the debug information level of release, 1.1166 + fastdebug, or slowdebug 1.1167 + </td> 1.1168 + </tr> 1.1169 + <tr> 1.1170 + <td><b><code>--with-dev-kit=</code></b><i>path</i></td> 1.1171 + <td> 1.1172 + select location of the compiler install or 1.1173 + developer install location 1.1174 + </td> 1.1175 + </tr> 1.1176 + <tr> 1.1177 + <td><b><code>--with-dxsdk=</code></b><i>path</i></td> 1.1178 + <td> 1.1179 + select location of the Windows Direct X SDK install 1.1180 + <br> 1.1181 + The <a name="dxsdk">Microsoft DirectX 9.0 SDK</a> 1.1182 + header files and libraries 1.1183 + from the Summer 2004 edition 1.1184 + are required for building OpenJDK. 1.1185 + This SDK can be downloaded from 1.1186 + <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&displaylang=en" target="_blank"> 1.1187 + Microsoft DirectX 9.0 SDK (Summer 2004)</a>. 1.1188 + If the link above becomes obsolete, the SDK can be found from 1.1189 + <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a> 1.1190 + (search with "DirectX 9.0 SDK Update Summer 2004"). 1.1191 + Installation usually will set the environment variable 1.1192 + <code>DXSDK_DIR</code> to it's install location. 1.1193 + </td> 1.1194 + </tr> 1.1195 + <tr> 1.1196 + <td><b><code>--with-freetype=</code></b><i>path</i></td> 1.1197 + <td> 1.1198 + select the freetype files to use. 1.1199 + <br> 1.1200 + Expecting the 1.1201 + <a name="freetype">freetype</a> libraries under 1.1202 + <code>lib/</code> and the 1.1203 + headers under <code>include/</code>. 1.1204 + <br> 1.1205 + Version 2.3 or newer of FreeType is required. 1.1206 + On Unix systems required files can be available as part of your 1.1207 + distribution (while you still may need to upgrade them). 1.1208 + Note that you need development version of package that 1.1209 + includes both the FreeType library and header files. 1.1210 + <br> 1.1211 + You can always download latest FreeType version from the 1.1212 + <a href="http://www.freetype.org" target="_blank">FreeType website</a>. 1.1213 + <br> 1.1214 + Building the freetype 2 libraries from scratch is also possible, 1.1215 + however on Windows refer to the 1.1216 + <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL"> 1.1217 + Windows FreeType DLL build instructions</a>. 1.1218 + <br> 1.1219 + Note that by default FreeType is built with byte code hinting 1.1220 + support disabled due to licensing restrictions. 1.1221 + In this case, text appearance and metrics are expected to 1.1222 + differ from Sun's official JDK build. 1.1223 + See 1.1224 + <a href="http://freetype.sourceforge.net/freetype2/index.html"> 1.1225 + the SourceForge FreeType2 Home Page 1.1226 + </a> 1.1227 + for more information. 1.1228 + </td> 1.1229 + </tr> 1.1230 + <tr> 1.1231 + <td><b><code>--with-import-hotspot=</code></b><i>path</i></td> 1.1232 + <td> 1.1233 + select the location to find hotspot 1.1234 + binaries from a previous build to avoid building 1.1235 + hotspot 1.1236 + </td> 1.1237 + </tr> 1.1238 + <tr> 1.1239 + <td><b><code>--with-target-bits=</code></b><i>arg</i></td> 1.1240 + <td> 1.1241 + select 32 or 64 bit build 1.1242 + </td> 1.1243 + </tr> 1.1244 + <tr> 1.1245 + <td><b><code>--with-jvm-variants=</code></b><i>variants</i></td> 1.1246 + <td> 1.1247 + select the JVM variants to build from, comma 1.1248 + separated list that can include: 1.1249 + server, client, kernel, zero and zeroshark 1.1250 + </td> 1.1251 + </tr> 1.1252 + <tr> 1.1253 + <td><b><code>--with-memory-size=</code></b><i>size</i></td> 1.1254 + <td> 1.1255 + select the RAM size that GNU make will think 1.1256 + this system has 1.1257 + </td> 1.1258 + </tr> 1.1259 + <tr> 1.1260 + <td><a name="msvcrNN"><b><code>--with-msvcr-dll=</code></b><i>path</i></a></td> 1.1261 + <td> 1.1262 + select the <code>msvcr100.dll</code> 1.1263 + file to include in the 1.1264 + Windows builds (C/C++ runtime library for 1.1265 + Visual Studio). 1.1266 + <br> 1.1267 + This is usually picked up automatically 1.1268 + from the redist 1.1269 + directories of Visual Studio 2010. 1.1270 + </td> 1.1271 + </tr> 1.1272 + <tr> 1.1273 + <td><b><code>--with-num-cores=</code></b><i>cores</i></td> 1.1274 + <td> 1.1275 + select the number of cores to use (processor 1.1276 + count or CPU count) 1.1277 + </td> 1.1278 + </tr> 1.1279 + <tr> 1.1280 + <td><b><code>--with-x=</code></b><i>path</i></td> 1.1281 + <td> 1.1282 + select the location of the X11 and xrender files. 1.1283 + <br> 1.1284 + The 1.1285 + <a name="xrender">XRender Extension Headers</a> 1.1286 + are required for building the 1.1287 + OpenJDK on Solaris and Linux. 1.1288 + <br> 1.1289 + The Linux header files are usually available from a "Xrender" 1.1290 + development package, it's recommended that you try and use 1.1291 + the package provided by the particular distribution of Linux that 1.1292 + you are using. 1.1293 + <br> 1.1294 + The Solaris XRender header files is 1.1295 + included with the other X11 header files 1.1296 + in the package <strong>SFWxwinc</strong> 1.1297 + on new enough versions of 1.1298 + Solaris and will be installed in 1.1299 + <code>/usr/X11/include/X11/extensions/Xrender.h</code> or 1.1300 + <code>/usr/openwin/share/include/X11/extensions/Xrender.h</code> 1.1301 + </td> 1.1302 + </tr> 1.1303 + </tbody> 1.1304 + </table> 1.1305 + </blockquote> 1.1306 + 1.1307 </blockquote> 1.1308 - <h4>Fedora 11</h4> 1.1309 - <p> 1.1310 + 1.1311 + <!-- ====================================================== --> 1.1312 + <hr> 1.1313 + <h3><a name="make">Make</a></h3> 1.1314 <blockquote> 1.1315 - After installing <a href="http://fedoraproject.org">Fedora</a> 11 1.1316 - you need to install several build dependencies. The simplest 1.1317 - way to do it is to execute the following commands as user 1.1318 - <tt>root</tt>: 1.1319 - <p/> 1.1320 - <code>yum-builddep java-1.6.0-openjdk</code> 1.1321 - <p/> 1.1322 - <code>yum install gcc gcc-c++</code> 1.1323 - <p/> 1.1324 - In addition, it's necessary to set a few environment variables for the build: 1.1325 - 1.1326 - <p/> 1.1327 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> 1.1328 + The basic invocation of the <code>make</code> utility 1.1329 + looks like: 1.1330 + <blockquote> 1.1331 + <b><code>make all</code></b> 1.1332 + </blockquote> 1.1333 + This will start the build to the output directory containing the 1.1334 + "configuration" that was created by the <code>configure</code> 1.1335 + script. Run <code>make help</code> for more information on 1.1336 + the available targets. 1.1337 + <br> 1.1338 + There are some of the make targets that 1.1339 + are of general interest: 1.1340 + <table border="1"> 1.1341 + <thead> 1.1342 + <tr> 1.1343 + <th>Make Target</th> 1.1344 + <th>Description</th> 1.1345 + </tr> 1.1346 + </thead> 1.1347 + <tbody> 1.1348 + <tr> 1.1349 + <td><i>empty</i></td> 1.1350 + <td>build everything but no images</td> 1.1351 + </tr> 1.1352 + <tr> 1.1353 + <td><b><code>all</code></b></td> 1.1354 + <td>build everything including images</td> 1.1355 + </tr> 1.1356 + <tr> 1.1357 + <td><b><code>all-conf</code></b></td> 1.1358 + <td>build all configurations</td> 1.1359 + </tr> 1.1360 + <tr> 1.1361 + <td><b><code>images</code></b></td> 1.1362 + <td>create complete j2sdk and j2re images</td> 1.1363 + </tr> 1.1364 + <tr> 1.1365 + <td><b><code>install</code></b></td> 1.1366 + <td>install the generated images locally, 1.1367 + typically in <code>/usr/local</code></td> 1.1368 + </tr> 1.1369 + <tr> 1.1370 + <td><b><code>clean</code></b></td> 1.1371 + <td>remove all files generated by make, 1.1372 + but not those generated by <code>configure</code></td> 1.1373 + </tr> 1.1374 + <tr> 1.1375 + <td><b><code>dist-clean</code></b></td> 1.1376 + <td>remove all files generated by both 1.1377 + and <code>configure</code> (basically killing the configuration)</td> 1.1378 + </tr> 1.1379 + <tr> 1.1380 + <td><b><code>help</code></b></td> 1.1381 + <td>give some help on using <code>make</code>, 1.1382 + including some interesting make targets</td> 1.1383 + </tr> 1.1384 + </tbody> 1.1385 + </table> 1.1386 </blockquote> 1.1387 </blockquote> 1.1388 - <!-- ------------------------------------------------------ --> 1.1389 - <h3><a name="centos">CentOS 5.5</a></h3> 1.1390 + 1.1391 + <!-- ====================================================== --> 1.1392 + <hr> 1.1393 + <h2><a name="testing">Testing</a></h2> 1.1394 <blockquote> 1.1395 - After installing 1.1396 - <a href="http://www.centos.org/">CentOS 5.5</a> 1.1397 - you need to make sure you have 1.1398 - the following Development bundles installed: 1.1399 + When the build is completed, you should see the generated 1.1400 + binaries and associated files in the <code>j2sdk-image</code> 1.1401 + directory in the output directory. 1.1402 + In particular, the 1.1403 + <code>build/<i>*</i>/images/j2sdk-image/bin</code> 1.1404 + directory should contain executables for the 1.1405 + OpenJDK tools and utilities for that configuration. 1.1406 + The testing tool <code>jtreg</code> will be needed 1.1407 + and can be found at: 1.1408 + <a href="http://openjdk.java.net/jtreg/" target="_blank"> 1.1409 + the jtreg site</a>. 1.1410 + The provided regression tests in the repositories 1.1411 + can be run with the command: 1.1412 <blockquote> 1.1413 - <ul> 1.1414 - <li>Development Libraries</li> 1.1415 - <li>Development Tools</li> 1.1416 - <li>Java Development</li> 1.1417 - <li>X Software Development (Including XFree86-devel)</li> 1.1418 - </ul> 1.1419 - </blockquote> 1.1420 - <p> 1.1421 - Plus the following packages: 1.1422 - <blockquote> 1.1423 - <ul> 1.1424 - <li>cups devel: Cups Development Package</li> 1.1425 - <li>alsa devel: Alsa Development Package</li> 1.1426 - <li>ant: Ant Package</li> 1.1427 - <li>Xi devel: libXi.so Development Package</li> 1.1428 - </ul> 1.1429 - </blockquote> 1.1430 - <p> 1.1431 - The freetype 2.3 packages don't seem to be available, 1.1432 - but the freetype 2.3 sources can be downloaded, built, 1.1433 - and installed easily enough from 1.1434 - <a href="http://downloads.sourceforge.net/freetype"> 1.1435 - the freetype site</a>. 1.1436 - Build and install with something like: 1.1437 - <blockquote> 1.1438 - <tt>./configure && make && sudo -u root make install</tt> 1.1439 - </blockquote> 1.1440 - <p> 1.1441 - Mercurial packages could not be found easily, but a Google 1.1442 - search should find ones, and they usually include Python if 1.1443 - it's needed. 1.1444 - </blockquote> 1.1445 - <!-- ------------------------------------------------------ --> 1.1446 - <h3><a name="debian">Debian</a></h3> 1.1447 - <blockquote> 1.1448 - <h4>Debian 5.0 (Lenny)</h4> 1.1449 - <p> 1.1450 - <blockquote> 1.1451 - After installing <a href="http://debian.org">Debian</a> 5 1.1452 - you need to install several build dependencies. 1.1453 - The simplest way to install the build dependencies is to 1.1454 - execute the following commands as user <tt>root</tt>: 1.1455 - <p/> 1.1456 - <code>aptitude build-dep openjdk-6</code> 1.1457 - <p/> 1.1458 - <code>aptitude install openjdk-6-jdk libmotif-dev</code> 1.1459 - <p/> 1.1460 - In addition, it's necessary to set a few environment variables for the build: 1.1461 - <p/> 1.1462 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> 1.1463 + <code><b>cd test && make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all</b></code> 1.1464 </blockquote> 1.1465 </blockquote> 1.1466 + 1.1467 <!-- ====================================================== --> 1.1468 - <h3><a name="ubuntu">Ubuntu</a></h3> 1.1469 + <!-- ====================================================== --> 1.1470 + <!-- ====================================================== --> 1.1471 + <!-- ====================================================== --> 1.1472 + <!-- ====================================================== --> 1.1473 + <!-- ====================================================== --> 1.1474 + <!-- ====================================================== --> 1.1475 + <!-- ====================================================== --> 1.1476 + <!-- ====================================================== --> 1.1477 + 1.1478 + <!-- ====================================================== --> 1.1479 + <hr> 1.1480 + <h2><a name="hints">Appendix A: Hints and Tips</a></h2> 1.1481 <blockquote> 1.1482 - <h4>Ubuntu 8.04</h4> 1.1483 - <p> 1.1484 + 1.1485 + <h3><a name="faq">FAQ</a></h3> 1.1486 <blockquote> 1.1487 - After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 1.1488 - you need to install several build dependencies. 1.1489 - <p/> 1.1490 - First, you need to enable the universe repository in the 1.1491 - Software Sources application and reload the repository 1.1492 - information. The Software Sources application is available 1.1493 - under the System/Administration menu. 1.1494 - <p/> 1.1495 - The simplest way to install the build dependencies is to 1.1496 - execute the following commands: 1.1497 - <p/> 1.1498 - <code>sudo aptitude build-dep openjdk-6</code> 1.1499 - <p/> 1.1500 - <code>sudo aptitude install openjdk-6-jdk</code> 1.1501 - <p/> 1.1502 - In addition, it's necessary to set a few environment variables for the build: 1.1503 - <p/> 1.1504 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> 1.1505 - </blockquote> 1.1506 - <h4>Ubuntu 8.10</h4> 1.1507 - <p> 1.1508 - <blockquote> 1.1509 - After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 1.1510 - you need to install several build dependencies. The simplest 1.1511 - way to do it is to execute the following commands: 1.1512 - <p/> 1.1513 - <code>sudo aptitude build-dep openjdk-6</code> 1.1514 - <p/> 1.1515 - <code>sudo aptitude install openjdk-6-jdk</code> 1.1516 - <p/> 1.1517 - In addition, it's necessary to set a few environment variables for the build: 1.1518 - <p/> 1.1519 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> 1.1520 - </blockquote> 1.1521 - <h4>Ubuntu 9.04</h4> 1.1522 - <p> 1.1523 - <blockquote> 1.1524 - After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 1.1525 - you need to install several build dependencies. The simplest 1.1526 - way to do it is to execute the following commands: 1.1527 - <p/> 1.1528 - <code>sudo aptitude build-dep openjdk-6</code> 1.1529 - <p/> 1.1530 - <code>sudo aptitude install openjdk-6-jdk</code> 1.1531 - <p/> 1.1532 - In addition, it's necessary to set a few environment variables for the build: 1.1533 - <p/> 1.1534 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> 1.1535 - </blockquote> 1.1536 - </blockquote> 1.1537 - <!-- ====================================================== --> 1.1538 - <h3><a name="opensuse">OpenSUSE</a></h3> 1.1539 - <blockquote> 1.1540 - <h4>OpenSUSE 11.1</h4> 1.1541 - <p> 1.1542 - <blockquote> 1.1543 - After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 1.1544 - you need to install several build dependencies. 1.1545 - The simplest way to install the build dependencies is to 1.1546 - execute the following commands: 1.1547 - <p/> 1.1548 - <code>sudo zypper source-install -d java-1_6_0-openjdk</code> 1.1549 - <p/> 1.1550 - <code>sudo zypper install make</code> 1.1551 - <p/> 1.1552 - In addition, it is necessary to set a few environment variables for the build: 1.1553 - <p/> 1.1554 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> 1.1555 - <p/> 1.1556 - Finally, you need to unset the <code>JAVA_HOME</code> environment variable: 1.1557 - <p/> 1.1558 - <code>export -n JAVA_HOME</code> 1.1559 - </blockquote> 1.1560 - </blockquote> 1.1561 - <!-- ====================================================== --> 1.1562 - <h3><a name="mandriva">Mandriva</a></h3> 1.1563 - <blockquote> 1.1564 - <h4>Mandriva Linux One 2009 Spring</h4> 1.1565 - <p> 1.1566 - <blockquote> 1.1567 - After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring 1.1568 - you need to install several build dependencies. 1.1569 - The simplest way to install the build dependencies is to 1.1570 - execute the following commands as user <tt>root</tt>: 1.1571 - <p/> 1.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> 1.1573 - <p/> 1.1574 - In addition, it is necessary to set a few environment variables for the build: 1.1575 - <p/> 1.1576 - <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> 1.1577 - </blockquote> 1.1578 - </blockquote> 1.1579 - <!-- ====================================================== --> 1.1580 - <h3><a name="opensolaris">OpenSolaris</a></h3> 1.1581 - <blockquote> 1.1582 - <h4>OpenSolaris 2009.06</h4> 1.1583 - <p> 1.1584 - <blockquote> 1.1585 - After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 1.1586 - you need to install several build dependencies. 1.1587 - The simplest way to install the build dependencies is to 1.1588 - execute the following commands: 1.1589 - <p/> 1.1590 - <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code> 1.1591 - <p/> 1.1592 - In addition, it is necessary to set a few environment variables for the build: 1.1593 - <p/> 1.1594 - <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code> 1.1595 - <p/> 1.1596 - Finally, you need to make sure that the build process can find the Sun Studio compilers: 1.1597 - <p/> 1.1598 - <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code> 1.1599 - </blockquote> 1.1600 - </blockquote> 1.1601 - <!-- ------------------------------------------------------ --> 1.1602 - <hr> 1.1603 - <h2><a name="directories">Source Directory Structure</a></h2> 1.1604 - <blockquote> 1.1605 - <p> 1.1606 - The source code for the OpenJDK is delivered in a set of 1.1607 - directories: 1.1608 - <tt>hotspot</tt>, 1.1609 - <tt>langtools</tt>, 1.1610 - <tt>corba</tt>, 1.1611 - <tt>jaxws</tt>, 1.1612 - <tt>jaxp</tt>, 1.1613 - and 1.1614 - <tt>jdk</tt>. 1.1615 - The <tt>hotspot</tt> directory contains the source code and make 1.1616 - files for building the OpenJDK Hotspot Virtual Machine. 1.1617 - The <tt>langtools</tt> directory contains the source code and make 1.1618 - files for building the OpenJDK javac and language tools. 1.1619 - The <tt>corba</tt> directory contains the source code and make 1.1620 - files for building the OpenJDK Corba files. 1.1621 - The <tt>jaxws</tt> directory contains the source code and make 1.1622 - files for building the OpenJDK JAXWS files. 1.1623 - The <tt>jaxp</tt> directory contains the source code and make 1.1624 - files for building the OpenJDK JAXP files. 1.1625 - The <tt>jdk</tt> directory contains the source code and make files for 1.1626 - building the OpenJDK runtime libraries and misc files. 1.1627 - The top level <tt>Makefile</tt> 1.1628 - is used to build the entire OpenJDK. 1.1629 1.1630 - <h3><a name="drops">Managing the Source Drops</a></h3> 1.1631 - <blockquote> 1.1632 <p> 1.1633 - The repositories <tt>jaxp</tt> and <tt>jaxws</tt> actually 1.1634 - do not contain the sources for JAXP or JAX-WS. 1.1635 - These products have their own open source procedures at their 1.1636 - <a href="http://jaxp.java.net/">JAXP</a> and 1.1637 - <a href="http://jax-ws.java.net/">JAX-WS</a> home pages. 1.1638 - The OpenJDK project does need access to these sources to build 1.1639 - a complete JDK image because JAXP and JAX-WS are part of the JDK. 1.1640 - The current process for delivery of the JAXP and JAX-WS sources 1.1641 - involves so called "source drop bundles" downloaded from a public 1.1642 - website. 1.1643 - There are many reasons for this current mechanism, and it is 1.1644 - understood that this is not ideal for the open source community. 1.1645 - It is possible this process could change in the future. 1.1646 + <b>Q:</b> The <code>configure</code> file looks horrible! 1.1647 + How are you going to edit it? 1.1648 <br> 1.1649 - <b>NOTE:</b> The <a href="http://download.java.net/openjdk/jdk8/"> 1.1650 - Complete OpenJDK Source Bundles</a> <u>will</u> contain the JAXP and 1.1651 - JAX-WS sources. 1.1652 + <b>A:</b> The <code>configure</code> file is generated (think 1.1653 + "compiled") by the autoconf tools. The source code is 1.1654 + in <code>configure.ac</code> various .m4 files in common/autoconf, 1.1655 + which are 1.1656 + much more readable. 1.1657 </p> 1.1658 1.1659 - <h4><a name="dropcreation">Creation of New Source Drop Bundles</a></h4> 1.1660 + <p> 1.1661 + <b>Q:</b> 1.1662 + Why is the <code>configure</code> file checked in, 1.1663 + if it is generated? 1.1664 + <br> 1.1665 + <b>A:</b> 1.1666 + If it was not generated, every user would need to have the autoconf 1.1667 + tools installed, and re-generate the <code>configure</code> file 1.1668 + as the first step. 1.1669 + Our goal is to minimize the work needed to be done by the user 1.1670 + to start building OpenJDK, and to minimize 1.1671 + the number of external dependencies required. 1.1672 + </p> 1.1673 + 1.1674 + <p> 1.1675 + <b>Q:</b> 1.1676 + Do you require a specific version of autoconf for regenerating 1.1677 + <code>configure</code>? 1.1678 + <br> 1.1679 + <b>A:</b> 1.1680 + Currently, no, but this will likely be the case when things have 1.1681 + settled down a bit more. (The reason for this is to avoid 1.1682 + large spurious changes in <code>configure</code> 1.1683 + in commits that made small changes to <code>configure.ac</code>). 1.1684 + </p> 1.1685 + 1.1686 + <p> 1.1687 + <b>Q:</b> 1.1688 + What are the files in <code>common/makefiles/support/*</code> for? 1.1689 + They look like gibberish. 1.1690 + <br> 1.1691 + <b>A:</b> 1.1692 + They are a somewhat ugly hack to compensate for command line length 1.1693 + limitations on certain platforms (Windows, Solaris). 1.1694 + Due to a combination of limitations in make and the shell, 1.1695 + command lines containing too many files will not work properly. 1.1696 + These 1.1697 + helper files are part of an elaborate hack that will compress the 1.1698 + command line in the makefile and then uncompress it safely. 1.1699 + We're 1.1700 + not proud of it, but it does fix the problem. 1.1701 + If you have any better suggestions, we're all ears! :-) 1.1702 + </p> 1.1703 + 1.1704 + <p> 1.1705 + <b>Q:</b> 1.1706 + I want to see the output of the commands that make runs, 1.1707 + like in the old build. How do I do that? 1.1708 + <br> 1.1709 + <b>A:</b> 1.1710 + You specify the <code>LOG</code> variable to make. There are 1.1711 + several log levels: 1.1712 + </p> 1.1713 <blockquote> 1.1714 - <ol> 1.1715 + <ul> 1.1716 <li> 1.1717 - The JAXP or JAX-WS team prepares a new zip bundle, 1.1718 - places a copy in a public download area on java.net, 1.1719 - sends us a link and a list of CRs (Change Request Numbers). 1.1720 - The older download bundles should not be deleted. 1.1721 - It is the responsibility of the JAXP and JAX-WS team to 1.1722 - place the proper GPL legal notices on the sources 1.1723 - and do any filtering or java re-packaging for the 1.1724 - OpenJDK instances of these classes. 1.1725 + <b><code>warn</code></b> — Default and very quiet. 1.1726 </li> 1.1727 <li> 1.1728 - The OpenJDK team copies this new bundle into shared 1.1729 - area (e.g. <tt>/java/devtools/share/jdk8-drops</tt>). 1.1730 - Older bundles are never deleted so we retain the history. 1.1731 + <b><code>info</code></b> — Shows more progress information 1.1732 + than warn. 1.1733 </li> 1.1734 <li> 1.1735 - The OpenJDK team edits the ant property file 1.1736 - <tt>jaxp/jaxp.properties</tt> or 1.1737 - <tt>jaxws/jaxws.properties</tt> to update the 1.1738 - base URL, the zip bundle name, and the MD5 checksum 1.1739 - of the zip bundle 1.1740 - (on Solaris: <tt>sum -c md5 <i>bundlename</i></tt>) 1.1741 + <b><code>debug</code></b> — Echos all command lines and 1.1742 + prints all macro calls for compilation definitions. 1.1743 </li> 1.1744 <li> 1.1745 - OpenJDK team reviews and commits those changes with the 1.1746 - given CRs. 1.1747 + <b><code>trace</code></b> — Echos all $(shell) command 1.1748 + lines as well. 1.1749 </li> 1.1750 - </ol> 1.1751 + </ul> 1.1752 </blockquote> 1.1753 1.1754 - <h4><a name="dropusage">Using Source Drop Bundles</a></h4> 1.1755 + <p> 1.1756 + <b>Q:</b> 1.1757 + When do I have to re-run <code>configure</code>? 1.1758 + <br> 1.1759 + <b>A:</b> 1.1760 + Normally you will run <code>configure</code> only once for creating a 1.1761 + configuration. 1.1762 + You need to re-run configuration only if you want to change any 1.1763 + configuration options, 1.1764 + or if you pull down changes to the <code>configure</code> script. 1.1765 + </p> 1.1766 + 1.1767 + <p> 1.1768 + <b>Q:</b> 1.1769 + I have added a new source file. Do I need to modify the makefiles? 1.1770 + <br> 1.1771 + <b>A:</b> 1.1772 + Normally, no. If you want to create e.g. a new native 1.1773 + library, 1.1774 + you will need to modify the makefiles. But for normal file 1.1775 + additions or removals, no changes are needed. There are certan 1.1776 + exceptions for some native libraries where the source files are spread 1.1777 + over many directories which also contain courses for other 1.1778 + libraries. In these cases it was simply easier to create include lists 1.1779 + rather thane excludes. 1.1780 + </p> 1.1781 + 1.1782 + <p> 1.1783 + <b>Q:</b> 1.1784 + When I run <code>configure --help</code>, I see many strange options, 1.1785 + like <code>--dvidir</code>. What is this? 1.1786 + <br> 1.1787 + <b>A:</b> 1.1788 + Configure provides a slew of options by default, to all projects 1.1789 + that use autoconf. Most of them are not used in OpenJDK, 1.1790 + so you can safely ignore them. To list only OpenJDK specific features, 1.1791 + use <code>configure --help=short</code> instead. 1.1792 + </p> 1.1793 + 1.1794 + <p> 1.1795 + <b>Q:</b> 1.1796 + <code>configure</code> provides OpenJDK-specific features such as 1.1797 + <code>--enable-jigsaw</code> or <code>--with-builddeps-server</code> 1.1798 + that are not described in this document. What about those? 1.1799 + <br> 1.1800 + <b>A:</b> 1.1801 + Try them out if you like! But be aware that most of these are 1.1802 + experimental features. 1.1803 + Many of them don't do anything at all at the moment; the option 1.1804 + is just a placeholder. Other depends on 1.1805 + pieces of code or infrastructure that is currently 1.1806 + not ready for prime time. 1.1807 + </p> 1.1808 + 1.1809 + <p> 1.1810 + <b>Q:</b> 1.1811 + How will you make sure you don't break anything? 1.1812 + <br> 1.1813 + <b>A:</b> 1.1814 + We have a script that compares the result of the new build system 1.1815 + with the result of the old. For most part, we aim for (and achieve) 1.1816 + byte-by-byte identical output. There are however technical issues 1.1817 + with e.g. native binaries, which might differ in a byte-by-byte 1.1818 + comparison, even 1.1819 + when building twice with the old build system. 1.1820 + For these, we compare relevant aspects 1.1821 + (e.g. the symbol table and file size). 1.1822 + Note that we still don't have 100% 1.1823 + equivalence, but we're close. 1.1824 + </p> 1.1825 + 1.1826 + <p> 1.1827 + <b>Q:</b> 1.1828 + I noticed this thing X in the build that looks very broken by design. 1.1829 + Why don't you fix it? 1.1830 + <br> 1.1831 + <b>A:</b> 1.1832 + Our goal is to produce a build output that is as close as 1.1833 + technically possible to the old build output. 1.1834 + If things were weird in the old build, 1.1835 + they will be weird in the new build. 1.1836 + Often, things were weird before due to obscurity, 1.1837 + but in the new build system the weird stuff comes up to the surface. 1.1838 + The plan is to attack these things at a later stage, 1.1839 + after the new build system is established. 1.1840 + </p> 1.1841 + 1.1842 + <p> 1.1843 + <b>Q:</b> 1.1844 + The code in the new build system is not that well-structured. 1.1845 + Will you fix this? 1.1846 + <br> 1.1847 + <b>A:</b> 1.1848 + Yes! The new build system has grown bit by bit as we converted 1.1849 + the old system. When all of the old build system is converted, 1.1850 + we can take a step back and clean up the structure of the new build 1.1851 + system. Some of this we plan to do before replacing the old build 1.1852 + system and some will need to wait until after. 1.1853 + </p> 1.1854 + 1.1855 + <p> 1.1856 + <b>Q:</b> What is @GenerateNativeHeaders? 1.1857 + <br> 1.1858 + <b>A:</b> 1.1859 + To speed up compilation, we added a flag to javac which makes it 1.1860 + do the job of javah as well, as a by-product; that is, generating 1.1861 + native .h header files. These files are only generated 1.1862 + if a class contains native methods. However, sometimes 1.1863 + a class contains no native method, 1.1864 + but still contains constants that native code needs to use. 1.1865 + The new GenerateNativeHeaders annotation tells javac to 1.1866 + force generation of a 1.1867 + header file in these cases. (We don't want to generate 1.1868 + native headers for all classes that contains constants 1.1869 + but no native methods, since 1.1870 + that would slow down the compilation process needlessly.) 1.1871 + </p> 1.1872 + 1.1873 + <p> 1.1874 + <b>Q:</b> 1.1875 + Is anything able to use the results of the new build's default make target? 1.1876 + <br> 1.1877 + <b>A:</b> 1.1878 + Yes, this is the minimal (or roughly minimal) 1.1879 + set of compiled output needed for a developer to actually 1.1880 + execute the newly built JDK. The idea is that in an incremental 1.1881 + development fashion, when doing a normal make, 1.1882 + you should only spend time recompiling what's changed 1.1883 + (making it purely incremental) and only do the work that's 1.1884 + needed to actually run and test your code. 1.1885 + The packaging stuff that is part of the <code>images</code> 1.1886 + target is not needed for a normal developer who wants to 1.1887 + test his new code. Even if it's quite fast, it's still unnecessary. 1.1888 + We're targeting sub-second incremental rebuilds! ;-) 1.1889 + (Or, well, at least single-digit seconds...) 1.1890 + </p> 1.1891 + 1.1892 + <p> 1.1893 + <b>Q:</b> 1.1894 + I usually set a specific environment variable when building, 1.1895 + but I can't find the equivalent in the new build. 1.1896 + What should I do? 1.1897 + <br> 1.1898 + <b>A:</b> 1.1899 + It might very well be that we have missed to add support for 1.1900 + an option that was actually used from outside the build system. 1.1901 + Email us and we will 1.1902 + add support for it! 1.1903 + </p> 1.1904 + 1.1905 + </blockquote> 1.1906 + 1.1907 + <h3><a name="performance">Build Performance Tips</a></h3> 1.1908 + <blockquote> 1.1909 + 1.1910 + <p>Building OpenJDK requires a lot of horsepower. 1.1911 + Some of the build tools can be adjusted to utilize more or less 1.1912 + of resources such as 1.1913 + parallel threads and memory. 1.1914 + The <code>configure</code> script analyzes your system and selects reasonable 1.1915 + values for such options based on your hardware. 1.1916 + If you encounter resource problems, such as out of memory conditions, 1.1917 + you can modify the detected values with:</p> 1.1918 + 1.1919 + <ul> 1.1920 + <li> 1.1921 + <b><code>--with-num-cores</code></b> 1.1922 + — 1.1923 + number of cores in the build system, 1.1924 + e.g. <code>--with-num-cores=8</code> 1.1925 + </li> 1.1926 + <li> 1.1927 + <b><code>--with-memory-size</code></b> 1.1928 + — memory (in MB) available in the build system, 1.1929 + e.g. <code>--with-memory-size=1024</code> 1.1930 + </li> 1.1931 + </ul> 1.1932 + 1.1933 + <p>It might also be necessary to specify the JVM arguments passed 1.1934 + to the Bootstrap JDK, using e.g. 1.1935 + <code>--with-boot-jdk-jvmargs="-Xmx8G -enableassertions"</code>. 1.1936 + Doing this will override the default JVM arguments 1.1937 + passed to the Bootstrap JDK.</p> 1.1938 + 1.1939 + 1.1940 + <p>One of the top goals of the new build system is to improve the 1.1941 + build performance and decrease the time needed to build. This will 1.1942 + soon also apply to the java compilation when the Smart Javac wrapper 1.1943 + is making its way into jdk8. It can be tried in the build-infra 1.1944 + repository already. You are likely to find that the new build system 1.1945 + is faster than the old one even without this feature.</p> 1.1946 + 1.1947 + <p>At the end of a successful execution of <code>configure</code>, 1.1948 + you will get a performance summary, 1.1949 + indicating how well the build will perform. Here you will 1.1950 + also get performance hints. 1.1951 + If you want to build fast, pay attention to those!</p> 1.1952 + 1.1953 + <h4>Building with ccache</h4> 1.1954 + 1.1955 + <p>A simple way to radically speed up compilation of native code 1.1956 + (typically hotspot and native libraries in JDK) is to install 1.1957 + ccache. This will cache and reuse prior compilation results, if the 1.1958 + source code is unchanged. However, ccache versions prior to 3.1.4 1.1959 + does not work correctly with the precompiled headers used in 1.1960 + OpenJDK. So if your platform supports ccache at 3.1.4 or later, we 1.1961 + highly recommend installing it. This is currently only supported on 1.1962 + linux.</p> 1.1963 + 1.1964 + <h4>Building on local disk</h4> 1.1965 + 1.1966 + <p>If you are using network shares, e.g. via NFS, for your source code, 1.1967 + make sure the build directory is situated on local disk. 1.1968 + The performance 1.1969 + penalty is extremely high for building on a network share, 1.1970 + close to unusable.</p> 1.1971 + 1.1972 + <h4>Building only one JVM</h4> 1.1973 + 1.1974 + <p>The old build builds multiple JVMs on 32-bit systems (client and 1.1975 + server; and on Windows kernel as well). In the new build we have 1.1976 + changed this default to only build server when it's available. This 1.1977 + improves build times for those not interested in multiple JVMs. To 1.1978 + mimic the old behavior on platforms that support it, 1.1979 + use <code>--with-jvm-variants=client,server</code>.</p> 1.1980 + 1.1981 + <h4>Selecting the number of cores to build on</h4> 1.1982 + 1.1983 + <p>By default, <code>configure</code> will analyze your machine and run the make 1.1984 + process in parallel with as many threads as you have cores. This 1.1985 + behavior can be overridden, either "permanently" (on a <code>configure</code> 1.1986 + basis) using <code>--with-num-cores=N</code> or for a single build 1.1987 + only (on a make basis), using <code>make JOBS=N</code>.</p> 1.1988 + 1.1989 + <p>If you want to make a slower build just this time, to save some CPU 1.1990 + power for other processes, you can run 1.1991 + e.g. <code>make JOBS=2</code>. This will force the makefiles 1.1992 + to only run 2 parallel processes, or even <code>make JOBS=1</code> 1.1993 + which will disable parallelism.</p> 1.1994 + 1.1995 + <p>If you want to have it the other way round, namely having slow 1.1996 + builds default and override with fast if you're 1.1997 + impatient, you should call <code>configure</code> with 1.1998 + <code>--with-num-cores=2</code>, making 2 the default. 1.1999 + If you want to run with more 1.2000 + cores, run <code>make JOBS=8</code></p> 1.2001 + 1.2002 + </blockquote> 1.2003 + 1.2004 + <h3><a name="troubleshooting">Troubleshooting</a></h3> 1.2005 + <blockquote> 1.2006 + 1.2007 + <h4>Solving build problems</h4> 1.2008 + 1.2009 <blockquote> 1.2010 - <p> 1.2011 - The ant scripts that build <tt>jaxp</tt> and <tt>jaxws</tt> 1.2012 - will attempt to locate these zip bundles from the directory 1.2013 - in the environment variable 1.2014 - <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt>. 1.2015 - The checksums protect from getting the wrong, corrupted, or 1.2016 - improperly modified sources. 1.2017 - Once the sources are made available, the population will not 1.2018 - happen again unless a <tt>make clobber</tt> is requested 1.2019 - or the <tt>jaxp/drop/</tt> or <tt>jaxws/drop/</tt> 1.2020 - directory is explicitly deleted. 1.2021 - <br> 1.2022 - <b>NOTE:</b> The default Makefile and ant script behavior 1.2023 - is to NOT download these bundles from the public http site. 1.2024 - In general, doing downloads 1.2025 - during the build process is not advised, it creates too much 1.2026 - unpredictability in the build process. 1.2027 - However, you can use <tt>make ALLOW_DOWNLOADS=true</tt> to 1.2028 - tell the ant script that the download of the zip bundle is 1.2029 - acceptable. 1.2030 - </p> 1.2031 - <p> 1.2032 - The recommended procedure for keeping a cache of these 1.2033 - source bundles would be to download them once, place them 1.2034 - in a directory outside the repositories, and then set 1.2035 - <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> to refer 1.2036 - to that directory. 1.2037 - These drop bundles do change occasionally, so the newer 1.2038 - bundles may need to be added to this area from time to time. 1.2039 - </p> 1.2040 + If the build fails (and it's not due to a compilation error in 1.2041 + a source file you've changed), the first thing you should do 1.2042 + is to re-run the build with more verbosity. 1.2043 + Do this by adding <code>LOG=debug</code> to your make command line. 1.2044 + <br> 1.2045 + The build log (with both stdout and stderr intermingled, 1.2046 + basically the same as you see on your console) can be found as 1.2047 + <code>build.log</code> in your build directory. 1.2048 + <br> 1.2049 + You can ask for help on build problems with the new build system 1.2050 + on either the 1.2051 + <a href="http://mail.openjdk.java.net/mailman/listinfo/build-dev"> 1.2052 + build-dev</a> 1.2053 + or the 1.2054 + <a href="http://mail.openjdk.java.net/mailman/listinfo/build-infra-dev"> 1.2055 + build-infra-dev</a> 1.2056 + mailing lists. Please include the relevant parts 1.2057 + of the build log. 1.2058 + <br> 1.2059 + A build can fail for any number of reasons. 1.2060 + Most failures 1.2061 + are a result of trying to build in an environment in which all the 1.2062 + pre-build requirements have not been met. 1.2063 + The first step in 1.2064 + troubleshooting a build failure is to recheck that you have satisfied 1.2065 + all the pre-build requirements for your platform. 1.2066 + Scanning the <code>configure</code> log is a good first step, making 1.2067 + sure that what it found makes sense for your system. 1.2068 + Look for strange error messages or any difficulties that 1.2069 + <code>configure</code> had in finding things. 1.2070 + <br> 1.2071 + Some of the more common problems with builds are briefly 1.2072 + described 1.2073 + below, with suggestions for remedies. 1.2074 + <ul> 1.2075 + <li> 1.2076 + <b>Corrupted Bundles on Windows:</b> 1.2077 + <blockquote> 1.2078 + Some virus scanning software has been known to 1.2079 + corrupt the 1.2080 + downloading of zip bundles. 1.2081 + It may be necessary to disable the 'on access' or 1.2082 + 'real time' 1.2083 + virus scanning features to prevent this corruption. 1.2084 + This type of "real time" virus scanning can also 1.2085 + slow down the 1.2086 + build process significantly. 1.2087 + Temporarily disabling the feature, or excluding the build 1.2088 + output directory may be necessary to get correct and 1.2089 + faster builds. 1.2090 + </blockquote> 1.2091 + </li> 1.2092 + <li> 1.2093 + <b>Slow Builds:</b> 1.2094 + <blockquote> 1.2095 + If your build machine seems to be overloaded from too many 1.2096 + simultaneous C++ compiles, try setting the 1.2097 + <code>JOBS=1</code> on the <code>make</code> command line. 1.2098 + Then try increasing the count slowly to an acceptable 1.2099 + level for your system. Also: 1.2100 + <blockquote> 1.2101 + Creating the javadocs can be very slow, 1.2102 + if you are running 1.2103 + javadoc, consider skipping that step. 1.2104 + <br> 1.2105 + Faster CPUs, more RAM, and a faster DISK usually helps. 1.2106 + The VM build tends to be CPU intensive 1.2107 + (many C++ compiles), 1.2108 + and the rest of the JDK will often be disk intensive. 1.2109 + <br> 1.2110 + Faster compiles are possible using a tool called 1.2111 + <a href="http://ccache.samba.org/" target="_blank">ccache</a>. 1.2112 + </blockquote> 1.2113 + </blockquote> 1.2114 + </li> 1.2115 + <li> 1.2116 + <b>File time issues:</b> 1.2117 + <blockquote> 1.2118 + If you see warnings that refer to file time stamps, e.g. 1.2119 + <blockquote> 1.2120 + <i>Warning message:</i><code> 1.2121 + File `xxx' has modification time in 1.2122 + the future.</code> 1.2123 + <br> 1.2124 + <i>Warning message:</i> <code> Clock skew detected. 1.2125 + Your build may 1.2126 + be incomplete.</code> 1.2127 + </blockquote> 1.2128 + These warnings can occur when the clock on the build 1.2129 + machine is out of 1.2130 + sync with the timestamps on the source files. 1.2131 + Other errors, apparently 1.2132 + unrelated but in fact caused by the clock skew, 1.2133 + can occur along with 1.2134 + the clock skew warnings. 1.2135 + These secondary errors may tend to obscure the 1.2136 + fact that the true root cause of the problem 1.2137 + is an out-of-sync clock. 1.2138 + <p> 1.2139 + If you see these warnings, reset the clock on the 1.2140 + build 1.2141 + machine, run "<code><i>gmake</i> clobber</code>" 1.2142 + or delete the directory 1.2143 + containing the build output, and restart the 1.2144 + build from the beginning. 1.2145 + </blockquote> 1.2146 + </li> 1.2147 + <li> 1.2148 + <b>Error message: 1.2149 + <code>Trouble writing out table to disk</code></b> 1.2150 + <blockquote> 1.2151 + Increase the amount of swap space on your build machine. 1.2152 + This could be caused by overloading the system and 1.2153 + it may be necessary to use: 1.2154 + <blockquote> 1.2155 + <code>make JOBS=1</code> 1.2156 + </blockquote> 1.2157 + to reduce the load on the system. 1.2158 + </blockquote> 1.2159 + </li> 1.2160 + <li> 1.2161 + <b>Error Message: 1.2162 + <code>libstdc++ not found:</code></b> 1.2163 + <blockquote> 1.2164 + This is caused by a missing libstdc++.a library. 1.2165 + This is installed as part of a specific package 1.2166 + (e.g. libstdc++.so.devel.386). 1.2167 + By default some 64-bit Linux versions (e.g. Fedora) 1.2168 + only install the 64-bit version of the libstdc++ package. 1.2169 + Various parts of the JDK build require a static 1.2170 + link of the C++ runtime libraries to allow for maximum 1.2171 + portability of the built images. 1.2172 + </blockquote> 1.2173 + </li> 1.2174 + <li> 1.2175 + <b>Linux Error Message: 1.2176 + <code>cannot restore segment prot after reloc</code></b> 1.2177 + <blockquote> 1.2178 + This is probably an issue with SELinux (See 1.2179 + <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank"> 1.2180 + http://en.wikipedia.org/wiki/SELinux</a>). 1.2181 + Parts of the VM is built without the <code>-fPIC</code> for 1.2182 + performance reasons. 1.2183 + <p> 1.2184 + To completely disable SELinux: 1.2185 + <ol> 1.2186 + <li><code>$ su root</code></li> 1.2187 + <li><code># system-config-securitylevel</code></li> 1.2188 + <li><code>In the window that appears, select the SELinux tab</code></li> 1.2189 + <li><code>Disable SELinux</code></li> 1.2190 + </ol> 1.2191 + <p> 1.2192 + Alternatively, instead of completely disabling it you could 1.2193 + disable just this one check. 1.2194 + <ol> 1.2195 + <li>Select System->Administration->SELinux Management</li> 1.2196 + <li>In the SELinux Management Tool which appears, 1.2197 + select "Boolean" from the menu on the left</li> 1.2198 + <li>Expand the "Memory Protection" group</li> 1.2199 + <li>Check the first item, labeled 1.2200 + "Allow all unconfined executables to use 1.2201 + libraries requiring text relocation ..."</li> 1.2202 + </ol> 1.2203 + </blockquote> 1.2204 + </li> 1.2205 + <li> 1.2206 + <b>Windows Error Messages:</b> 1.2207 + <br> 1.2208 + <code>*** fatal error - couldn't allocate heap, ... </code> 1.2209 + <br> 1.2210 + <code>rm fails with "Directory not empty"</code> 1.2211 + <br> 1.2212 + <code>unzip fails with "cannot create ... Permission denied"</code> 1.2213 + <br> 1.2214 + <code>unzip fails with "cannot create ... Error 50"</code> 1.2215 + <br> 1.2216 + <blockquote> 1.2217 + The CYGWIN software can conflict with other non-CYGWIN 1.2218 + software. See the CYGWIN FAQ section on 1.2219 + <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> 1.2220 + BLODA (applications that interfere with CYGWIN)</a>. 1.2221 + </blockquote> 1.2222 + </li> 1.2223 + <li> 1.2224 + <b>Windows Error Message: <code>spawn failed</code></b> 1.2225 + <blockquote> 1.2226 + Try rebooting the system, or there could be some kind of 1.2227 + issue with the disk or disk partition being used. 1.2228 + Sometimes it comes with a "Permission Denied" message. 1.2229 + </blockquote> 1.2230 + </li> 1.2231 + </ul> 1.2232 </blockquote> 1.2233 - </blockquote> 1.2234 - </blockquote> 1.2235 - <!-- ------------------------------------------------------ --> 1.2236 + 1.2237 + </blockquote> <!-- Troubleshooting --> 1.2238 + 1.2239 + </blockquote> <!-- Appendix A --> 1.2240 + 1.2241 + <!-- ====================================================== --> 1.2242 <hr> 1.2243 - <h2><a name="building">Build Information</a></h2> 1.2244 + <h2><a name="gmake">Appendix B: GNU make</a></h2> 1.2245 <blockquote> 1.2246 - Building the OpenJDK 1.2247 - is done with a <a href="#gmake">GNU <tt>make</tt></a> command line 1.2248 - and various 1.2249 - environment or make variable settings that direct the makefile rules 1.2250 - to where various components have been installed. 1.2251 - Where possible the makefiles will attempt to located the various 1.2252 - components in the default locations or any component specific 1.2253 - variable settings. 1.2254 - When the normal defaults fail or components cannot be found, 1.2255 - the various 1.2256 - <tt>ALT_*</tt> variables (alternates) 1.2257 - can be used to help the makefiles locate components. 1.2258 - <p> 1.2259 - Refer to the bash/sh/ksh setup file 1.2260 - <tt>jdk/make/jdk_generic_profile.sh</tt> 1.2261 - if you need help in setting up your environment variables. 1.2262 - A build could be as simple as: 1.2263 - <blockquote> 1.2264 - <pre><tt> 1.2265 - bash 1.2266 - . jdk/make/jdk_generic_profile.sh 1.2267 - <a href="#gmake"><tt>make</tt></a> sanity && <a href="#gmake"><tt>make</tt></a> 1.2268 - </tt></pre> 1.2269 - </blockquote> 1.2270 - <p> 1.2271 - Of course ksh or sh would work too. 1.2272 - But some customization will probably be necessary. 1.2273 - The <tt>sanity</tt> rule will make some basic checks on build 1.2274 - dependencies and generate appropriate warning messages 1.2275 - regarding missing, out of date, or newer than expected components 1.2276 - found on your system. 1.2277 - </blockquote> 1.2278 - <!-- ------------------------------------------------------ --> 1.2279 - <hr> 1.2280 - <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3> 1.2281 - <blockquote> 1.2282 + 1.2283 The Makefiles in the OpenJDK are only valid when used with the 1.2284 - GNU version of the utility command <tt>make</tt> 1.2285 - (<tt><i>gmake</i></tt>). 1.2286 + GNU version of the utility command <code>make</code> 1.2287 + (usually called <code>gmake</code> on Solaris). 1.2288 A few notes about using GNU make: 1.2289 <ul> 1.2290 <li> 1.2291 You need GNU make version 3.81 or newer. 1.2292 + If the GNU make utility on your systems is not 1.2293 + 3.81 or newer, 1.2294 + see <a href="#buildgmake">"Building GNU make"</a>. 1.2295 </li> 1.2296 <li> 1.2297 - Place the location of the GNU make binary in the <tt>PATH</tt>. 1.2298 - </li> 1.2299 - <li> 1.2300 - <strong>Linux:</strong> 1.2301 - The <tt>/usr/bin/make</tt> should be 3.81 or newer 1.2302 - and should work fine for you. 1.2303 - If this version is not 3.81 or newer, 1.2304 - see the <a href="#buildgmake">"Building GNU make"</a> section. 1.2305 + Place the location of the GNU make binary in the 1.2306 + <code>PATH</code>. 1.2307 </li> 1.2308 <li> 1.2309 <strong>Solaris:</strong> 1.2310 - Do NOT use <tt>/usr/bin/make</tt> on Solaris. 1.2311 + Do NOT use <code>/usr/bin/make</code> on Solaris. 1.2312 If your Solaris system has the software 1.2313 - from the Solaris Companion CD installed, 1.2314 - you should try and use <tt>gmake</tt> 1.2315 - which will be located in either the <tt>/opt/sfw/bin</tt> or 1.2316 - <tt>/usr/sfw/bin</tt> directory. 1.2317 - In more recent versions of Solaris GNU make might be found 1.2318 - at <tt>/usr/bin/gmake</tt>.<br> 1.2319 - <b>NOTE:</b> It is very likely that this <tt>gmake</tt> 1.2320 - could be 3.80, you need 3.81, in which case, 1.2321 - see the <a href="#buildgmake">"Building GNU make"</a> section. 1.2322 + from the Solaris Developer Companion CD installed, 1.2323 + you should try and use <code>gmake</code> 1.2324 + which will be located in either the 1.2325 + <code>/usr/bin</code>, <code>/opt/sfw/bin</code> or 1.2326 + <code>/usr/sfw/bin</code> directory. 1.2327 </li> 1.2328 <li> 1.2329 <strong>Windows:</strong> 1.2330 - Make sure you start your build inside a bash/sh/ksh shell and are 1.2331 - using a <tt>make.exe</tt> utility built for that environment.<br/> 1.2332 - <strong>MKS</strong> builds need a native Windows version of GNU make 1.2333 - (see <a href="#buildgmake">Building GNU make</a>).<br/> 1.2334 - <strong>Cygwin</strong> builds need 1.2335 - a make version which was specially compiled for the Cygwin environment 1.2336 - (see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong> 1.2337 - the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong> 1.2338 - work because it does not support drive letters in paths. Make sure that 1.2339 - your version of make will be found before the Cygwins default make by 1.2340 - setting an appropriate <tt>PATH</tt> environment variable or by removing 1.2341 - Cygwin's make after you built your own make version.<br/> 1.2342 - <strong>MinGW/MSYS</strong> builds can use the default make which 1.2343 - comes with the environment. 1.2344 + Make sure you start your build inside a bash shell. 1.2345 + </li> 1.2346 + <li> 1.2347 + <strong>Mac OS X:</strong> 1.2348 + The XCode "command line tools" must be installed on your Mac. 1.2349 </li> 1.2350 </ul> 1.2351 <p> 1.2352 @@ -714,1539 +1775,728 @@ 1.2353 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank"> 1.2354 ftp.gnu.org/pub/gnu/make/</a>. 1.2355 </p> 1.2356 - <!-- ------------------------------------------------------ --> 1.2357 - <h4><a name="buildgmake">Building GNU make</a></h4> 1.2358 + 1.2359 + <h3><a name="buildgmake">Building GNU make</a></h3> 1.2360 <blockquote> 1.2361 - First step is to get the GNU make 3.81 (or newer) source from 1.2362 + First step is to get the GNU make 3.81 or newer source from 1.2363 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank"> 1.2364 ftp.gnu.org/pub/gnu/make/</a>. 1.2365 - Building is a little different depending on the OS and unix toolset 1.2366 - on Windows: 1.2367 - <ul> 1.2368 - <li> 1.2369 - <strong>Linux:</strong> 1.2370 - <tt>./configure && make</tt> 1.2371 - </li> 1.2372 - <li> 1.2373 - <strong>Solaris:</strong> 1.2374 - <tt>./configure && gmake CC=gcc</tt> 1.2375 - </li> 1.2376 - <li> 1.2377 - <strong>Windows for CYGWIN:</strong><br/> 1.2378 - <tt>./configure</tt><br/> 1.2379 - Add the line <tt>#define HAVE_CYGWIN_SHELL 1</tt> to the end of <tt>config.h</tt><br/> 1.2380 - <tt>make</tt><br/> 1.2381 - <br/> 1.2382 - This should produce <tt>make.exe</tt> in the current directory. 1.2383 - </li> 1.2384 - <li> 1.2385 - <strong>Windows for MKS:</strong><br/> 1.2386 - Edit <tt>config.h.W32</tt> and uncomment the line <tt>#define HAVE_MKS_SHELL 1</tt><br/> 1.2387 - Set the environment for your native compiler (e.g. by calling:<br/> 1.2388 - <tt>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /xp /x64)</tt> 1.2389 - <tt>nmake -f NMakefile.win32</tt> 1.2390 - <br/> 1.2391 - This should produce <tt>WinDebug/make.exe</tt> and <tt>WinRel/make.exe</tt> 1.2392 - <br/> 1.2393 - If you get the error: <tt>NMAKE : fatal error U1045: spawn failed : Permission denied</tt> 1.2394 - you have to set the <tt>Read & execute</tt> permission for the file <tt>subproc.bat</tt>. 1.2395 - </li> 1.2396 - </ul> 1.2397 - </blockquote> 1.2398 - </blockquote> 1.2399 - <!-- ------------------------------------------------------ --> 1.2400 - <hr> 1.2401 - <h3><a name="linux">Basic Linux System Setup</a></h3> 1.2402 - <blockquote> 1.2403 - <strong>i586 only:</strong> 1.2404 - The minimum recommended hardware for building the Linux version 1.2405 - is a Pentium class processor or better, at least 256 MB of RAM, and 1.2406 - approximately 1.5 GB of free disk space. 1.2407 - <p> 1.2408 - <strong>X64 only:</strong> 1.2409 - The minimum recommended hardware for building the Linux 1.2410 - version is an AMD Opteron class processor, at least 512 MB of RAM, and 1.2411 - approximately 4 GB of free disk space. 1.2412 - <p> 1.2413 - The build will use the tools contained in 1.2414 - <tt>/bin</tt> and 1.2415 - <tt>/usr/bin</tt> 1.2416 - of a standard installation of the Linux operating environment. 1.2417 - You should ensure that these directories are in your 1.2418 - <tt>PATH</tt>. 1.2419 - <p> 1.2420 - Note that some Linux systems have a habit of pre-populating 1.2421 - your environment variables for you, for example <tt>JAVA_HOME</tt> 1.2422 - might get pre-defined for you to refer to the JDK installed on 1.2423 - your Linux system. 1.2424 - You will need to unset <tt>JAVA_HOME</tt>. 1.2425 - It's a good idea to run <tt>env</tt> and verify the 1.2426 - environment variables you are getting from the default system 1.2427 - settings make sense for building the 1.2428 - OpenJDK. 1.2429 - </blockquote> 1.2430 - <!-- ------------------------------------------------------ --> 1.2431 - <h4><a name="linux_checklist">Basic Linux Check List</a></h4> 1.2432 - <blockquote> 1.2433 - <ol> 1.2434 - <li> 1.2435 - Install the 1.2436 - <a href="#bootjdk">Bootstrap JDK</a>, set 1.2437 - <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>. 1.2438 - </li> 1.2439 - <li> 1.2440 - <a href="#importjdk">Optional Import JDK</a>, set 1.2441 - <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>. 1.2442 - </li> 1.2443 - <li> 1.2444 - Install or upgrade the <a href="#freetype">FreeType development 1.2445 - package</a>. 1.2446 - </li> 1.2447 - <li> 1.2448 - Install 1.2449 - <a href="#ant">Ant 1.7.1 or newer</a>, 1.2450 - make sure it is in your PATH. 1.2451 - </li> 1.2452 - </ol> 1.2453 - </blockquote> 1.2454 - <!-- ------------------------------------------------------ --> 1.2455 - <hr> 1.2456 - <h3><a name="solaris">Basic Solaris System Setup</a></h3> 1.2457 - <blockquote> 1.2458 - The minimum recommended hardware for building the 1.2459 - Solaris SPARC version is an UltraSPARC with 512 MB of RAM. 1.2460 - For building 1.2461 - the Solaris x86 version, a Pentium class processor or better and at 1.2462 - least 512 MB of RAM are recommended. 1.2463 - Approximately 1.4 GB of free disk 1.2464 - space is needed for a 32-bit build. 1.2465 - <p> 1.2466 - If you are building the 64-bit version, you should 1.2467 - run the command "isainfo -v" to verify that you have a 1.2468 - 64-bit installation, it should say <tt>sparcv9</tt> or 1.2469 - <tt>amd64</tt>. 1.2470 - An additional 7 GB of free disk space is needed 1.2471 - for a 64-bit build. 1.2472 - <p> 1.2473 - The build uses the tools contained in <tt>/usr/ccs/bin</tt> 1.2474 - and <tt>/usr/bin</tt> of a standard developer or full installation of 1.2475 - the Solaris operating environment. 1.2476 - <p> 1.2477 - Solaris patches specific to the JDK can be downloaded from the 1.2478 - <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank"> 1.2479 - SunSolve JDK Solaris patches download page</a>. 1.2480 - You should ensure that the latest patch cluster for 1.2481 - your version of the Solaris operating environment has also 1.2482 - been installed. 1.2483 - </blockquote> 1.2484 - <!-- ------------------------------------------------------ --> 1.2485 - <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4> 1.2486 - <blockquote> 1.2487 - <ol> 1.2488 - <li> 1.2489 - Install the 1.2490 - <a href="#bootjdk">Bootstrap JDK</a>, set 1.2491 - <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>. 1.2492 - </li> 1.2493 - <li> 1.2494 - <a href="#importjdk">Optional Import JDK</a>, set 1.2495 - <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>. 1.2496 - </li> 1.2497 - <li> 1.2498 - Install the 1.2499 - <a href="#studio">Sun Studio Compilers</a>, set 1.2500 - <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>. 1.2501 - </li> 1.2502 - <li> 1.2503 - Install the 1.2504 - <a href="#cups">CUPS Include files</a>, set 1.2505 - <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>. 1.2506 - </li> 1.2507 - <li> 1.2508 - Install the <a href="#xrender">XRender Include files</a>. 1.2509 - </li> 1.2510 - <li> 1.2511 - Install 1.2512 - <a href="#ant">Ant 1.7.1 or newer</a>, 1.2513 - make sure it is in your PATH. 1.2514 - </li> 1.2515 - </ol> 1.2516 - </blockquote> 1.2517 - <!-- ------------------------------------------------------ --> 1.2518 - <hr> 1.2519 - <h3><a name="windows">Basic Windows System Setup</a></h3> 1.2520 - <blockquote> 1.2521 - <strong>i586 only:</strong> 1.2522 - The minimum recommended hardware for building the 32-bit or X86 1.2523 - Windows version is an Pentium class processor or better, at least 1.2524 - 512 MB of RAM, and approximately 600 MB of free disk space. 1.2525 - <strong> 1.2526 - NOTE: The Windows build machines need to use the 1.2527 - file system NTFS. 1.2528 - Build machines formatted to FAT32 will not work 1.2529 - because FAT32 doesn't support case-sensitivity in file names. 1.2530 - </strong> 1.2531 - <p> 1.2532 - <strong>X64 only:</strong> 1.2533 - The minimum recommended hardware for building 1.2534 - the Windows X64 version is an AMD Opteron class processor, at least 1 1.2535 - GB of RAM, and approximately 10 GB of free disk space. 1.2536 - </blockquote> 1.2537 - <!-- ------------------------------------------------------ --> 1.2538 - <h4><a name="paths">Windows Paths</a></h4> 1.2539 - <blockquote> 1.2540 - <strong>Windows:</strong> 1.2541 - Note that GNU make, the shell and other Unix-tools required during the build 1.2542 - do not tolerate the Windows habit 1.2543 - of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames. 1.2544 - Luckily on most Windows systems, you can use <tt>/</tt>instead of <tt>\</tt>, and 1.2545 - there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename"> 1.2546 - "8.3" pathname</a> without spaces for any path that contains spaces. 1.2547 - Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the 1.2548 - other files and directories inside a given directory) and can not be 1.2549 - algorithmicly calculated by only looking at a specific path name. 1.2550 - <p> 1.2551 - The makefiles will try to translate any pathnames supplied 1.2552 - to it into the <tt>C:/</tt> style automatically. 1.2553 - </p> 1.2554 - <p> 1.2555 - Special care has to be taken if native Windows applications 1.2556 - like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed 1.2557 - by Unix-tools like <tt>make</tt> or <tt>sh</tt>! 1.2558 - </p> 1.2559 - </blockquote> 1.2560 - <!-- ------------------------------------------------------ --> 1.2561 - <h4><a name="paths">Windows build environments</a></h4> 1.2562 - <blockquote> 1.2563 - Building on Windows requires a Unix-like environment, notably a Unix-like shell. 1.2564 - There are several such environments available of which 1.2565 - <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>, 1.2566 - <a href="http://www.cygwin.com/">Cygwin</a> and 1.2567 - <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for 1.2568 - the OpenJDK build. One of the differences of these three systems is the way 1.2569 - they handle Windows path names, particularly path names which contain 1.2570 - spaces, backslashes as path separators and possibly drive letters. Depending 1.2571 - on the use case and the specifics of each environment these path problems can 1.2572 - be solved by a combination of quoting whole paths, translating backslashes to 1.2573 - forward slashes, escaping backslashes with additional backslashes and 1.2574 - translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename"> 1.2575 - "8.3" version</a>. 1.2576 - <p> 1.2577 - As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17), 1.2578 - MKS builds are known to be the fastest Windows builds while MingGW/MSYS 1.2579 - builds are slightly slower (about 10%) than MKS builds and Cygwin builds 1.2580 - require nearly twice the time (about 180%) of MKS builds (e.g. on a 1.2581 - DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system 1.2582 - the complete OpenJDK 8 product build takes about 49min with MKS, 54min with 1.2583 - MinGW/MSYS and 88min with Cygwin). 1.2584 - </p> 1.2585 - <p> 1.2586 - Mixing tools from the different Unix emulation environments is not a good 1.2587 - idea and will probably not work! 1.2588 - </p> 1.2589 - <p> 1.2590 - <strong>MKS:</strong> is a commercial product which includes 1.2591 - all the Unix utilities which are required to build the OpenJDK except GNU 1.2592 - make. In pre-OpenJDK times it was the only supported build environment on 1.2593 - Windows. The MKS tools support Windows paths with drive letters and 1.2594 - forward slashes as path separator. Paths in environment variables like (for 1.2595 - example) <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'. 1.2596 - </p> 1.2597 - <p> 1.2598 - Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths 1.2599 - with spaces to short (8.3) path names,e .g. 1.2600 - <tt>dosname -s "<i>path</i>"</tt>. 1.2601 - </p> 1.2602 - <p> 1.2603 - If you are using the MKS environment, you need a native Windows version 1.2604 - of Gnu make <a href="#buildgmake">which you can easily build yourself</a>. 1.2605 - </p> 1.2606 - <p> 1.2607 - <strong>Cygwin:</strong> 1.2608 - is an open source, Linux-like environment which tries to emulate 1.2609 - a complete POSIX layer on Windows. It tries to be smart about path names 1.2610 - and can usually handle all kinds of paths if they are correctly quoted 1.2611 - or escaped although internally it maps drive letters <tt><drive>:</tt> 1.2612 - to a virtual directory <tt>/cygdrive/<drive></tt>. 1.2613 - </p> 1.2614 - <p> 1.2615 - You can always use the <tt>cygpath</tt> utility to map pathnames with spaces 1.2616 - or the backslash character into the <tt>C:/</tt> style of pathname 1.2617 - (called 'mixed'), e.g. <tt>cygpath -s -m "<i>path</i>"</tt>. 1.2618 - </p> 1.2619 - <p> 1.2620 - Note that the use of CYGWIN creates a unique problem with regards to 1.2621 - setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows 1.2622 - the <tt>PATH</tt> variable contains directories 1.2623 - separated with the ";" character (Solaris and Linux use ":"). 1.2624 - With CYGWIN, it uses ":", but that means that paths like "C:/path" 1.2625 - cannot be placed in the CYGWIN version of <tt>PATH</tt> and 1.2626 - instead CYGWIN uses something like <tt>/cygdrive/c/path</tt> 1.2627 - which CYGWIN understands, but only CYGWIN understands. 1.2628 - </p> 1.2629 - <p> 1.2630 - If you are using the Cygwin environment, you need to 1.2631 - <a href="#buildgmake">compile your own version</a> 1.2632 - of GNU make because the default Cygwin make can not handle drive letters in paths. 1.2633 - </p> 1.2634 - <p> 1.2635 - <strong>MinGW/MSYS:</strong> 1.2636 - MinGW ("Minimalist GNU for Windows") is a collection of free Windows 1.2637 - specific header files and import libraries combined with GNU toolsets that 1.2638 - allow one to produce native Windows programs that do not rely on any 1.2639 - 3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building 1.2640 - applications and programs which rely on traditional UNIX tools to 1.2641 - be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>. 1.2642 - </p> 1.2643 - <p> 1.2644 - Like Cygwin, MinGW/MSYS can handle different types of path formats. They 1.2645 - are internally converted to paths with forward slashes and drive letters 1.2646 - <tt><drive>:</tt> replaced by a virtual 1.2647 - directory <tt>/<drive></tt>. Additionally, MSYS automatically 1.2648 - detects binaries compiled for the MSYS environment and feeds them with the 1.2649 - internal, Unix-style path names. If native Windows applications are called 1.2650 - from within MSYS programs their path arguments are automatically converted 1.2651 - back to Windows style path names with drive letters and backslashes as 1.2652 - path separators. This may cause problems for Windows applications which 1.2653 - use forward slashes as parameter separator (e.g. <tt>cl /nologo /I</tt>) 1.2654 - because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion"> 1.2655 - replace such parameters by drive letters</a>. 1.2656 - </p> 1.2657 - <p> 1.2658 - If you are using the MinGW/MSYS system you can use the default make 1.2659 - version supplied by the environment. 1.2660 - </p> 1.2661 - </blockquote> 1.2662 - <!-- ------------------------------------------------------ --> 1.2663 - <h4><a name="windows_checklist">Basic Windows Check List</a></h4> 1.2664 - <blockquote> 1.2665 - <ol> 1.2666 - <li> 1.2667 - Install one of the 1.2668 - <a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or 1.2669 - <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments. 1.2670 - </li> 1.2671 - <li> 1.2672 - Install the 1.2673 - <a href="#bootjdk">Bootstrap JDK</a>, set 1.2674 - <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>. 1.2675 - </li> 1.2676 - <li> 1.2677 - <a href="#importjdk">Optional Import JDK</a>, set 1.2678 - <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>. 1.2679 - </li> 1.2680 - <li> 1.2681 - Install the 1.2682 - <a href="#msvc32">Microsoft Visual Studio Compilers</a>). 1.2683 - </li> 1.2684 - <li> 1.2685 - Setup all environment variables for compilers 1.2686 - (see <a href="#msvc32">compilers</a>). 1.2687 - </li> 1.2688 - <li> 1.2689 - Install 1.2690 - <a href="#dxsdk">Microsoft DirectX SDK</a>. 1.2691 - </li> 1.2692 - <li> 1.2693 - Install 1.2694 - <a href="#ant">Ant 1.7.1 or newer</a>, 1.2695 - make sure it is in your PATH and set 1.2696 - <tt><a href="#ANT_HOME">ANT_HOME</a></tt>. 1.2697 - </li> 1.2698 - </ol> 1.2699 - </blockquote> 1.2700 - <!-- ------------------------------------------------------ --> 1.2701 - <hr> 1.2702 - <h3><a name="macosx">Basic Mac OS X System Setup</a></h3> 1.2703 - <blockquote> 1.2704 - <strong>X64 only:</strong> 1.2705 - The minimum recommended hardware for building 1.2706 - the Mac OS X version is any 64-bit capable Intel processor, at least 2 1.2707 - GB of RAM, and approximately 3 GB of free disk space. You should also 1.2708 - have OS X Lion 10.7.3 installed. 1.2709 - </blockquote> 1.2710 - <!-- ------------------------------------------------------ --> 1.2711 - 1.2712 - <h4><a name="macosx_checklist">Basic Mac OS X Check List</a></h4> 1.2713 - <blockquote> 1.2714 - <ol> 1.2715 - <li> 1.2716 - Install <a href="https://developer.apple.com/xcode/">XCode 4.1</a> or newer. 1.2717 - If you install XCode 4.3 or newer, make sure you also install 1.2718 - "Command line tools" found under the preferences pane "Downloads". 1.2719 - </li> 1.2720 - <li> 1.2721 - Install <a href="http://support.apple.com/kb/dl1421" target="_blank">"Java for OS X Lion Update 1"</a>, 1.2722 - set <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a> to <code>`/usr/libexec/java_home -v 1.6`</code></tt> 1.2723 - </li> 1.2724 - <li> 1.2725 - <a href="#importjdk">Optional Import JDK</a>, set 1.2726 - <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>. 1.2727 - </li> 1.2728 - </ol> 1.2729 - </blockquote> 1.2730 - <!-- ------------------------------------------------------ --> 1.2731 - <hr> 1.2732 - <h3><a name="dependencies">Build Dependencies</a></h3> 1.2733 - <blockquote> 1.2734 - Depending on the platform, the OpenJDK build process has some basic 1.2735 - dependencies on components not part of the OpenJDK sources. 1.2736 - Some of these are specific to a platform, some even specific to 1.2737 - an architecture. 1.2738 - Each dependency will have a set of ALT variables that can be set 1.2739 - to tell the makefiles where to locate the component. 1.2740 - In most cases setting these ALT variables may not be necessary 1.2741 - and the makefiles will find defaults on the system in standard 1.2742 - install locations or through component specific variables. 1.2743 - <!-- ------------------------------------------------------ --> 1.2744 - <h4><a name="bootjdk">Bootstrap JDK</a></h4> 1.2745 - <blockquote> 1.2746 - All OpenJDK builds require access to the previously released 1.2747 - JDK 6, this is often called a bootstrap JDK. 1.2748 - The JDK 6 binaries can be downloaded from Sun's 1.2749 - <a href="http://java.sun.com/javase/downloads/index.jsp" 1.2750 - target="_blank">JDK 6 download site</a>. 1.2751 - For build performance reasons 1.2752 - is very important that this bootstrap JDK be made available on the 1.2753 - local disk of the machine doing the build. 1.2754 - You should always set 1.2755 - <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt> 1.2756 - to point to the location of 1.2757 - the bootstrap JDK installation, this is the directory pathname 1.2758 - that contains a <tt>bin, lib, and include</tt> 1.2759 - It's also a good idea to also place its <tt>bin</tt> directory 1.2760 - in the <tt>PATH</tt> environment variable, although it's 1.2761 - not required. 1.2762 - <p> 1.2763 - <strong>Solaris:</strong> 1.2764 - Some pre-installed JDK images may be available to you in the 1.2765 - directory <tt>/usr/jdk/instances</tt>. 1.2766 - If you don't set 1.2767 - <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt> 1.2768 - the makefiles will look in that location for a JDK it can use. 1.2769 - </blockquote> 1.2770 - <!-- ------------------------------------------------------ --> 1.2771 - <h4><a name="importjdk">Optional Import JDK</a></h4> 1.2772 - <blockquote> 1.2773 - The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt> 1.2774 - setting is only needed if you are not building the entire 1.2775 - JDK. For example, if you have built the entire JDK once, and 1.2776 - wanted to avoid repeatedly building the Hotspot VM, you could 1.2777 - set this to the location of the previous JDK install image 1.2778 - and the build will copy the needed files from this import area. 1.2779 - </blockquote> 1.2780 - <!-- ------------------------------------------------------ --> 1.2781 - <h4><a name="ant">Ant</a></h4> 1.2782 - <blockquote> 1.2783 - All OpenJDK builds require access to least Ant 1.7.1. 1.2784 - The Ant tool is available from the 1.2785 - <a href="http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip" target="_blank"> 1.2786 - Ant 1.7.1 archive download site</a>. 1.2787 - You should always make sure <tt>ant</tt> is in your PATH, and 1.2788 - on Windows you may also need to set 1.2789 - <tt><a href="#ANT_HOME">ANT_HOME</a></tt> 1.2790 - to point to the location of 1.2791 - the Ant installation, this is the directory pathname 1.2792 - that contains a <tt>bin and lib</tt>. 1.2793 - <br> 1.2794 - <b>WARNING:</b> Ant versions used from IDE tools like NetBeans 1.2795 - or installed via system packages may not operate the same 1.2796 - as the one obtained from the Ant download bundles. 1.2797 - These system and IDE installers sometimes choose to change 1.2798 - the ant installation enough to cause differences. 1.2799 - </blockquote> 1.2800 - <!-- ------------------------------------------------------ --> 1.2801 - <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4> 1.2802 - <blockquote> 1.2803 - See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank"> 1.2804 - http://en.wikipedia.org/wiki/Certificate_Authority</a> 1.2805 - for a better understanding of the Certificate Authority (CA). 1.2806 - A certificates file named "cacerts" 1.2807 - represents a system-wide keystore with CA certificates. 1.2808 - In JDK and JRE 1.2809 - binary bundles, the "cacerts" file contains root CA certificates from 1.2810 - several public CAs (e.g., VeriSign, Thawte, and Baltimore). 1.2811 - The source contain a cacerts file 1.2812 - without CA root certificates. 1.2813 - Formal JDK builders will need to secure 1.2814 - permission from each public CA and include the certificates into their 1.2815 - own custom cacerts file. 1.2816 - Failure to provide a populated cacerts file 1.2817 - will result in verification errors of a certificate chain during runtime. 1.2818 - The variable 1.2819 - <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt> 1.2820 - can be used to override the default location of the 1.2821 - cacerts file that will get placed in your build. 1.2822 - By default an empty cacerts file is provided and that should be 1.2823 - fine for most JDK developers. 1.2824 - </blockquote> 1.2825 - <!-- ------------------------------------------------------ --> 1.2826 - <h4><a name="compilers">Compilers</a></h4> 1.2827 - <blockquote> 1.2828 - <strong><a name="gcc">Linux gcc/binutils</a></strong> 1.2829 + Building is a little different depending on the OS but is 1.2830 + basically done with: 1.2831 <blockquote> 1.2832 - The GNU gcc compiler version should be 4.3 or newer. 1.2833 - The compiler used should be the default compiler installed 1.2834 - in <tt>/usr/bin</tt>. 1.2835 - </blockquote> 1.2836 - <strong><a name="studio">Solaris: Sun Studio</a></strong> 1.2837 - <blockquote> 1.2838 - At a minimum, the 1.2839 - <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank"> 1.2840 - Sun Studio 12 Update 1 Compilers</a> 1.2841 - (containing version 5.10 of the C and C++ compilers) is required, 1.2842 - including specific patches. 1.2843 - <p> 1.2844 - The Solaris SPARC patch list is: 1.2845 - <ul> 1.2846 - <li> 1.2847 - 118683-05: SunOS 5.10: Patch for profiling libraries and assembler 1.2848 - </li> 1.2849 - <li> 1.2850 - 119963-21: SunOS 5.10: Shared library patch for C++ 1.2851 - </li> 1.2852 - <li> 1.2853 - 120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch 1.2854 - </li> 1.2855 - <li> 1.2856 - 128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler 1.2857 - </li> 1.2858 - <li> 1.2859 - 141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95 1.2860 - </li> 1.2861 - <li> 1.2862 - 141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler 1.2863 - </li> 1.2864 - <li> 1.2865 - 142371-01: Sun Studio 12.1 Update 1: Patch for dbx 1.2866 - </li> 1.2867 - <li> 1.2868 - 143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling 1.2869 - </li> 1.2870 - <li> 1.2871 - 143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95 1.2872 - </li> 1.2873 - <li> 1.2874 - 142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools 1.2875 - </li> 1.2876 - </ul> 1.2877 - <p> 1.2878 - The Solaris X86 patch list is: 1.2879 - <ul> 1.2880 - <li> 1.2881 - 119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler 1.2882 - </li> 1.2883 - <li> 1.2884 - 119964-21: SunOS 5.10_x86: Shared library patch for C++_x86 1.2885 - </li> 1.2886 - <li> 1.2887 - 120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch 1.2888 - </li> 1.2889 - <li> 1.2890 - 141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend 1.2891 - </li> 1.2892 - <li> 1.2893 - 128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler 1.2894 - </li> 1.2895 - <li> 1.2896 - 142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler 1.2897 - </li> 1.2898 - <li> 1.2899 - 142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools 1.2900 - </li> 1.2901 - </ul> 1.2902 - <p> 1.2903 - Set 1.2904 - <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> 1.2905 - to point to the location of 1.2906 - the compiler binaries, and place this location in the <tt>PATH</tt>. 1.2907 - <p> 1.2908 - The Oracle Solaris Studio Express compilers at: 1.2909 - <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank"> 1.2910 - Oracle Solaris Studio Express Download site</a> 1.2911 - are also an option, although these compilers have not 1.2912 - been extensively used yet. 1.2913 - </blockquote> 1.2914 - <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong> 1.2915 - <blockquote> 1.2916 - <p> 1.2917 - <b>BEGIN WARNING</b>: JDK 7 has transitioned to 1.2918 - use the newest VS2010 Microsoft compilers. 1.2919 - No other compilers are known to build the entire JDK, 1.2920 - including non-open portions. 1.2921 - Visual Studio 2010 Express compilers are now able to build all the 1.2922 - open source repositories, but this is 32 bit only. To build 64 bit 1.2923 - Windows binaries use the the 7.1 Windows SDK. 1.2924 - <b>END WARNING.</b> 1.2925 - <p> 1.2926 - The 32-bit OpenJDK Windows build requires 1.2927 - Microsoft Visual Studio C++ 2010 (VS2010) Professional 1.2928 - Edition or Express compiler. 1.2929 - The compiler and other tools are expected to reside 1.2930 - in the location defined by the variable 1.2931 - <tt>VS100COMNTOOLS</tt> which 1.2932 - is set by the Microsoft Visual Studio installer. 1.2933 - <p> 1.2934 - Once the compiler is installed, 1.2935 - it is recommended that you run <tt>VCVARS32.BAT</tt> 1.2936 - to set the compiler environment variables 1.2937 - <tt>INCLUDE</tt>, 1.2938 - <tt>LIB</tt>, and 1.2939 - <tt>PATH</tt> 1.2940 - prior to building the 1.2941 - OpenJDK. 1.2942 - The above environment variables <b>MUST</b> be set. 1.2943 - This compiler also contains the Windows SDK v 7.0a, 1.2944 - which is an update to the Windows 7 SDK. 1.2945 - <p> 1.2946 - <b>WARNING:</b> Make sure you check out the 1.2947 - <a href="#cygwin">CYGWIN link.exe WARNING</a>. 1.2948 - The path <tt>/usr/bin</tt> must be after the path to the 1.2949 - Visual Studio product. 1.2950 - </blockquote> 1.2951 - <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong> 1.2952 - <blockquote> 1.2953 - For <b>X64</b>, the set up is much the same as 32 bit 1.2954 - except that you run <tt>amd64\VCVARS64.BAT</tt> 1.2955 - to set the compiler environment variables. 1.2956 - Previously 64 bit builds had to use the 64 bit compiler in 1.2957 - an unbundled Windows SDK but this is no longer necessary if 1.2958 - you have VS2010 Professional. 1.2959 - </blockquote> 1.2960 - <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong> 1.2961 - For a free alternative for 64 bit builds, use the 7.1 SDK. 1.2962 - Microsoft say that to set up your paths for this run 1.2963 - <pre> 1.2964 - c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64. 1.2965 - </pre> 1.2966 - What was tested is just directly setting up LIB, INCLUDE, 1.2967 - PATH and based on the installation directories using the 1.2968 - DOS short name appropriate for the system, (you will 1.2969 - need to set them for yours, not just blindly copy this) eg : 1.2970 - <pre> 1.2971 - set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0 1.2972 - set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1 1.2973 - set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH% 1.2974 - set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include 1.2975 - set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64 1.2976 - </pre> 1.2977 - <strong><a name="llvmgcc">OS X Lion 10.7.3: LLVM GCC</a></strong> 1.2978 - <blockquote> 1.2979 - LLVM GCC is bundled with XCode. The version should be at least 4.2.1. 1.2980 + <code>bash ./configure</code> 1.2981 + <br> 1.2982 + <code>make</code> 1.2983 </blockquote> 1.2984 </blockquote> 1.2985 - <!-- ------------------------------------------------------ --> 1.2986 - <h4><a name="zip">Zip and Unzip</a></h4> 1.2987 + 1.2988 + </blockquote> <!-- Appendix B --> 1.2989 + 1.2990 + <!-- ====================================================== --> 1.2991 + <hr> 1.2992 + <h2><a name="buildenvironments">Appendix C: Build Environments</a></h2> 1.2993 + <blockquote> 1.2994 + 1.2995 + <h3><a name="MBE">Minimum Build Environments</a></h3> 1.2996 <blockquote> 1.2997 - Version 2.2 (November 3rd 1997) or newer of the zip utility 1.2998 - and version 5.12 or newer of the unzip utility is needed 1.2999 - to build the JDK. 1.3000 - With Solaris, Linux, and Windows CYGWIN, the zip and unzip 1.3001 - utilities installed on the system should be fine. 1.3002 - Information and the source code for 1.3003 - ZIP.EXE and UNZIP.EXE is available on the 1.3004 - <a href="http://www.info-zip.org" 1.3005 - target="_blank">info-zip web site</a>. 1.3006 + This file often describes specific requirements for what we 1.3007 + call the 1.3008 + "minimum build environments" (MBE) for this 1.3009 + specific release of the JDK. 1.3010 + What is listed below is what the Oracle Release 1.3011 + Engineering Team will use to build the Oracle JDK product. 1.3012 + Building with the MBE will hopefully generate the most compatible 1.3013 + bits that install on, and run correctly on, the most variations 1.3014 + of the same base OS and hardware architecture. 1.3015 + In some cases, these represent what is often called the 1.3016 + least common denominator, but each Operating System has different 1.3017 + aspects to it. 1.3018 + <p> 1.3019 + In all cases, the Bootstrap JDK version minimum is critical, 1.3020 + we cannot guarantee builds will work with older Bootstrap JDK's. 1.3021 + Also in all cases, more RAM and more processors is better, 1.3022 + the minimums listed below are simply recommendations. 1.3023 + <p> 1.3024 + With Solaris and Mac OS X, the version listed below is the 1.3025 + oldest release we can guarantee builds and works, and the 1.3026 + specific version of the compilers used could be critical. 1.3027 + <p> 1.3028 + With Windows the critical aspect is the Visual Studio compiler 1.3029 + used, which due to it's runtime, generally dictates what Windows 1.3030 + systems can do the builds and where the resulting bits can 1.3031 + be used.<br> 1.3032 + <b>NOTE: We expect a change here off these older Windows OS releases 1.3033 + and to a 'less older' one, probably Windows 2008R2 X64.</b> 1.3034 + <p> 1.3035 + With Linux, it was just a matter of picking a 1.3036 + stable distribution that is a good representative for Linux 1.3037 + in general.<br> 1.3038 + <b>NOTE: We expect a change here from Fedora 9 to something else, 1.3039 + but it has not been completely determined yet, possibly 1.3040 + Ubuntu 12.04 X64, unbiased community feedback would be welcome on 1.3041 + what a good choice would be here.</b> 1.3042 + <p> 1.3043 + It is understood that most developers will NOT be using these 1.3044 + specific versions, and in fact creating these specific versions 1.3045 + may be difficult due to the age of some of this software. 1.3046 + It is expected that developers are more often using the more 1.3047 + recent releases and distributions of these operating systems. 1.3048 + <p> 1.3049 + Compilation problems with newer or different C/C++ compilers is a 1.3050 + common problem. 1.3051 + Similarly, compilation problems related to changes to the 1.3052 + <code>/usr/include</code> or system header files is also a 1.3053 + common problem with older, newer, or unreleased OS versions. 1.3054 + Please report these types of problems as bugs so that they 1.3055 + can be dealt with accordingly. 1.3056 + </p> 1.3057 + <table border="1"> 1.3058 + <thead> 1.3059 + <tr> 1.3060 + <th>Base OS and Architecture</th> 1.3061 + <th>OS</th> 1.3062 + <th>C/C++ Compiler</th> 1.3063 + <th>Bootstrap JDK</th> 1.3064 + <th>Processors</th> 1.3065 + <th>RAM Minimum</th> 1.3066 + <th>DISK Needs</th> 1.3067 + </tr> 1.3068 + </thead> 1.3069 + <tbody> 1.3070 + <tr> 1.3071 + <td>Linux X86 (32-bit) and X64 (64-bit)</td> 1.3072 + <td>Fedora 9</td> 1.3073 + <td>gcc 4.3 </td> 1.3074 + <td>JDK 7u7</td> 1.3075 + <td>2 or more</td> 1.3076 + <td>1 GB</td> 1.3077 + <td>6 GB</td> 1.3078 + </tr> 1.3079 + <tr> 1.3080 + <td>Solaris SPARC (32-bit) and SPARCV9 (64-bit)</td> 1.3081 + <td>Solaris 10 Update 6</td> 1.3082 + <td>Studio 12 Update 1 + patches</td> 1.3083 + <td>JDK 7u7</td> 1.3084 + <td>4 or more</td> 1.3085 + <td>4 GB</td> 1.3086 + <td>8 GB</td> 1.3087 + </tr> 1.3088 + <tr> 1.3089 + <td>Solaris X86 (32-bit) and X64 (64-bit)</td> 1.3090 + <td>Solaris 10 Update 6</td> 1.3091 + <td>Studio 12 Update 1 + patches</td> 1.3092 + <td>JDK 7u7</td> 1.3093 + <td>4 or more</td> 1.3094 + <td>4 GB</td> 1.3095 + <td>8 GB</td> 1.3096 + </tr> 1.3097 + <tr> 1.3098 + <td>Windows X86 (32-bit)</td> 1.3099 + <td>Windows XP</td> 1.3100 + <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> 1.3101 + <td>JDK 7u7</td> 1.3102 + <td>2 or more</td> 1.3103 + <td>2 GB</td> 1.3104 + <td>6 GB</td> 1.3105 + </tr> 1.3106 + <tr> 1.3107 + <td>Windows X64 (64-bit)</td> 1.3108 + <td>Windows Server 2003 - Enterprise x64 Edition</td> 1.3109 + <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> 1.3110 + <td>JDK 7u7</td> 1.3111 + <td>2 or more</td> 1.3112 + <td>2 GB</td> 1.3113 + <td>6 GB</td> 1.3114 + </tr> 1.3115 + <tr> 1.3116 + <td>Mac OS X X64 (64-bit)</td> 1.3117 + <td>Mac OS X 10.7 "Lion"</td> 1.3118 + <td>XCode 4.5.2 or newer</td> 1.3119 + <td>JDK 7u7</td> 1.3120 + <td>2 or more</td> 1.3121 + <td>4 GB</td> 1.3122 + <td>6 GB</td> 1.3123 + </tr> 1.3124 + </tbody> 1.3125 + </table> 1.3126 </blockquote> 1.3127 - <!-- ------------------------------------------------------ --> 1.3128 - <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris & Linux)</a></h4> 1.3129 + 1.3130 + <!-- ====================================================== --> 1.3131 + <hr> 1.3132 + <h3><a name="SDBE">Specific Developer Build Environments</a></h3> 1.3133 <blockquote> 1.3134 - <strong>Solaris:</strong> 1.3135 - CUPS header files are required for building the 1.3136 - OpenJDK on Solaris. 1.3137 - The Solaris header files can be obtained by installing 1.3138 - the package <strong>SFWcups</strong> from the Solaris Software 1.3139 - Companion CD/DVD, these often will be installed into 1.3140 - <tt>/opt/sfw/cups</tt>. 1.3141 + We won't be listing all the possible environments, but 1.3142 + we will try to provide what information we have available to us. 1.3143 <p> 1.3144 - <strong>Linux:</strong> 1.3145 - CUPS header files are required for building the 1.3146 - OpenJDK on Linux. 1.3147 - The Linux header files are usually available from a "cups" 1.3148 - development package, it's recommended that you try and use 1.3149 - the package provided by the particular version of Linux that 1.3150 - you are using. 1.3151 - <p> 1.3152 - The CUPS header files can always be downloaded from 1.3153 - <a href="http://www.cups.org" target="_blank">www.cups.org</a>. 1.3154 - The variable 1.3155 - <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt> 1.3156 - can be used to override the default location of the 1.3157 - CUPS Header files. 1.3158 + <strong>NOTE: The community can help out by updating 1.3159 + this part of the document. 1.3160 + </strong> 1.3161 + 1.3162 + <h4><a name="fedora">Fedora</a></h4> 1.3163 + <blockquote> 1.3164 + After installing the latest 1.3165 + <a href="http://fedoraproject.org">Fedora</a> 1.3166 + you need to install several build dependencies. 1.3167 + The simplest way to do it is to execute the 1.3168 + following commands as user <code>root</code>: 1.3169 + <blockquote> 1.3170 + <code>yum-builddep java-1.7.0-openjdk</code> 1.3171 + <br> 1.3172 + <code>yum install gcc gcc-c++</code> 1.3173 + </blockquote> 1.3174 + <p> 1.3175 + In addition, it's necessary to set a few environment 1.3176 + variables for the build: 1.3177 + <blockquote> 1.3178 + <code>export LANG=C</code> 1.3179 + <br> 1.3180 + <code>export PATH="/usr/lib/jvm/java-openjdk/bin:${PATH}"</code> 1.3181 + </blockquote> 1.3182 + </blockquote> 1.3183 + 1.3184 + 1.3185 + <h4><a name="centos">CentOS 5.5</a></h4> 1.3186 + <blockquote> 1.3187 + After installing 1.3188 + <a href="http://www.centos.org/">CentOS 5.5</a> 1.3189 + you need to make sure you have 1.3190 + the following Development bundles installed: 1.3191 + <blockquote> 1.3192 + <ul> 1.3193 + <li>Development Libraries</li> 1.3194 + <li>Development Tools</li> 1.3195 + <li>Java Development</li> 1.3196 + <li>X Software Development (Including XFree86-devel)</li> 1.3197 + </ul> 1.3198 + </blockquote> 1.3199 + <p> 1.3200 + Plus the following packages: 1.3201 + <blockquote> 1.3202 + <ul> 1.3203 + <li>cups devel: Cups Development Package</li> 1.3204 + <li>alsa devel: Alsa Development Package</li> 1.3205 + <li>Xi devel: libXi.so Development Package</li> 1.3206 + </ul> 1.3207 + </blockquote> 1.3208 + <p> 1.3209 + The freetype 2.3 packages don't seem to be available, 1.3210 + but the freetype 2.3 sources can be downloaded, built, 1.3211 + and installed easily enough from 1.3212 + <a href="http://downloads.sourceforge.net/freetype"> 1.3213 + the freetype site</a>. 1.3214 + Build and install with something like: 1.3215 + <blockquote> 1.3216 + <code>bash ./configure</code> 1.3217 + <br> 1.3218 + <code>make</code> 1.3219 + <br> 1.3220 + <code>sudo -u root make install</code> 1.3221 + </blockquote> 1.3222 + <p> 1.3223 + Mercurial packages could not be found easily, but a Google 1.3224 + search should find ones, and they usually include Python if 1.3225 + it's needed. 1.3226 + </blockquote> 1.3227 + 1.3228 + <h4><a name="debian">Debian 5.0 (Lenny)</a></h4> 1.3229 + <blockquote> 1.3230 + After installing <a href="http://debian.org">Debian</a> 5 1.3231 + you need to install several build dependencies. 1.3232 + The simplest way to install the build dependencies is to 1.3233 + execute the following commands as user <code>root</code>: 1.3234 + <blockquote> 1.3235 + <code>aptitude build-dep openjdk-7</code> 1.3236 + <br> 1.3237 + <code>aptitude install openjdk-7-jdk libmotif-dev</code> 1.3238 + </blockquote> 1.3239 + <p> 1.3240 + In addition, it's necessary to set a few environment 1.3241 + variables for the build: 1.3242 + <blockquote> 1.3243 + <code>export LANG=C</code> 1.3244 + <br> 1.3245 + <code>export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"</code> 1.3246 + </blockquote> 1.3247 + </blockquote> 1.3248 + 1.3249 + <h4><a name="ubuntu">Ubuntu 12.04</a></h4> 1.3250 + <blockquote> 1.3251 + After installing <a href="http://ubuntu.org">Ubuntu</a> 12.04 1.3252 + you need to install several build dependencies. The simplest 1.3253 + way to do it is to execute the following commands: 1.3254 + <blockquote> 1.3255 + <code>sudo aptitude build-dep openjdk-7</code> 1.3256 + <br> 1.3257 + <code>sudo aptitude install openjdk-7-jdk</code> 1.3258 + </blockquote> 1.3259 + <p> 1.3260 + In addition, it's necessary to set a few environment 1.3261 + variables for the build: 1.3262 + <blockquote> 1.3263 + <code>export LANG=C</code> 1.3264 + <br> 1.3265 + <code>export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"</code> 1.3266 + </blockquote> 1.3267 + </blockquote> 1.3268 + 1.3269 + <h4><a name="opensuse">OpenSUSE 11.1</a></h4> 1.3270 + <blockquote> 1.3271 + After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 1.3272 + you need to install several build dependencies. 1.3273 + The simplest way to install the build dependencies is to 1.3274 + execute the following commands: 1.3275 + <blockquote> 1.3276 + <code>sudo zypper source-install -d java-1_7_0-openjdk</code> 1.3277 + <br> 1.3278 + <code>sudo zypper install make</code> 1.3279 + </blockquote> 1.3280 + <p> 1.3281 + In addition, it is necessary to set a few environment 1.3282 + variables for the build: 1.3283 + <blockquote> 1.3284 + <code>export LANG=C</code> 1.3285 + <br> 1.3286 + <code>export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:$[PATH}"</code> 1.3287 + </blockquote> 1.3288 + <p> 1.3289 + Finally, you need to unset the <code>JAVA_HOME</code> 1.3290 + environment variable: 1.3291 + <blockquote> 1.3292 + <code>export -n JAVA_HOME</code> 1.3293 + </blockquote> 1.3294 + </blockquote> 1.3295 + 1.3296 + <h4><a name="mandriva">Mandriva Linux One 2009 Spring</a></h4> 1.3297 + <blockquote> 1.3298 + After installing <a href="http://mandriva.org">Mandriva</a> 1.3299 + Linux One 2009 Spring 1.3300 + you need to install several build dependencies. 1.3301 + The simplest way to install the build dependencies is to 1.3302 + execute the following commands as user <code>root</code>: 1.3303 + <blockquote> 1.3304 + <code>urpmi java-1.7.0-openjdk-devel make gcc gcc-c++ 1.3305 + freetype-devel zip unzip libcups2-devel libxrender1-devel 1.3306 + libalsa2-devel libstc++-static-devel libxtst6-devel 1.3307 + libxi-devel</code> 1.3308 + </blockquote> 1.3309 + <p> 1.3310 + In addition, it is necessary to set a few environment 1.3311 + variables for the build: 1.3312 + <blockquote> 1.3313 + <code>export LANG=C</code> 1.3314 + <br> 1.3315 + <code>export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:${PATH}"</code> 1.3316 + </blockquote> 1.3317 + </blockquote> 1.3318 + 1.3319 + <h4><a name="opensolaris">OpenSolaris 2009.06</a></h4> 1.3320 + <blockquote> 1.3321 + After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 1.3322 + you need to install several build dependencies. 1.3323 + The simplest way to install the build dependencies is to 1.3324 + execute the following commands: 1.3325 + <blockquote> 1.3326 + <code>pfexec pkg install SUNWgmake SUNWj7dev 1.3327 + sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl 1.3328 + SUNWxorg-headers SUNWaudh SUNWfreetype2</code> 1.3329 + </blockquote> 1.3330 + <p> 1.3331 + In addition, it is necessary to set a few environment 1.3332 + variables for the build: 1.3333 + <blockquote> 1.3334 + <code>export LANG=C</code> 1.3335 + <br> 1.3336 + <code>export PATH="/opt/SunStudioExpress/bin:${PATH}"</code> 1.3337 + </blockquote> 1.3338 + </blockquote> 1.3339 + 1.3340 </blockquote> 1.3341 - <!-- ------------------------------------------------------ --> 1.3342 - <h4><a name="xrender">XRender Extension Headers (Solaris & Linux)</a></h4> 1.3343 - <blockquote> 1.3344 - <p> 1.3345 - <strong>Solaris:</strong> 1.3346 - XRender header files are required for building the 1.3347 - OpenJDK on Solaris. 1.3348 - The XRender header file is included with the other X11 header files 1.3349 - in the package <strong>SFWxwinc</strong> on new enough versions of 1.3350 - Solaris and will be installed in 1.3351 - <tt>/usr/X11/include/X11/extensions/Xrender.h</tt> or 1.3352 - <tt>/usr/openwin/share/include/X11/extensions/Xrender.h</tt> 1.3353 - </p><p> 1.3354 - <strong>Linux:</strong> 1.3355 - XRender header files are required for building the 1.3356 - OpenJDK on Linux. 1.3357 - The Linux header files are usually available from a "Xrender" 1.3358 - development package, it's recommended that you try and use 1.3359 - the package provided by the particular distribution of Linux that 1.3360 - you are using. 1.3361 - </p> 1.3362 - </blockquote> 1.3363 - <!-- ------------------------------------------------------ --> 1.3364 - <h4><a name="freetype">FreeType 2</a></h4> 1.3365 - <blockquote> 1.3366 - Version 2.3 or newer of FreeType is required for building the OpenJDK. 1.3367 - On Unix systems required files can be available as part of your 1.3368 - distribution (while you still may need to upgrade them). 1.3369 - Note that you need development version of package that 1.3370 - includes both FreeType library and header files. 1.3371 - <p> 1.3372 - You can always download latest FreeType version from the 1.3373 - <a href="http://www.freetype.org" target="_blank">FreeType website</a>. 1.3374 - <p> 1.3375 - Makefiles will try to pick FreeType from /usr/lib and /usr/include. 1.3376 - In case it is installed elsewhere you will need to set environment 1.3377 - variables 1.3378 - <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt> 1.3379 - and 1.3380 - <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt> 1.3381 - to refer to place where library and header files are installed. 1.3382 - <p> 1.3383 - Building the freetype 2 libraries from scratch is also possible, 1.3384 - however on Windows refer to the 1.3385 - <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL"> 1.3386 - Windows FreeType DLL build instructions</a>. 1.3387 - <p> 1.3388 - Note that by default FreeType is built with byte code hinting 1.3389 - support disabled due to licensing restrictions. 1.3390 - In this case, text appearance and metrics are expected to 1.3391 - differ from Sun's official JDK build. 1.3392 - See 1.3393 - <a href="http://freetype.sourceforge.net/freetype2/index.html"> 1.3394 - the SourceForge FreeType2 Home Page 1.3395 - </a> 1.3396 - for more information. 1.3397 - </blockquote> 1.3398 - <!-- ------------------------------------------------------ --> 1.3399 - <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4> 1.3400 - <blockquote> 1.3401 - <strong>Linux only:</strong> 1.3402 - Version 0.9.1 or newer of the ALSA files are 1.3403 - required for building the OpenJDK on Linux. 1.3404 - These Linux files are usually available from an "alsa" 1.3405 - of "libasound" 1.3406 - development package, it's highly recommended that you try and use 1.3407 - the package provided by the particular version of Linux that 1.3408 - you are using. 1.3409 - The makefiles will check this emit a sanity error if it is 1.3410 - missing or the wrong version. 1.3411 - <p> 1.3412 - In particular, older Linux systems will likely not have the 1.3413 - right version of ALSA installed, for example 1.3414 - Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently 1.3415 - recent ALSA distribution. 1.3416 - On rpm-based systems, you can see if ALSA is installed by 1.3417 - running this command: 1.3418 - <pre> 1.3419 - <tt>rpm -qa | grep alsa</tt> 1.3420 - </pre> 1.3421 - Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed. 1.3422 - <p> 1.3423 - If your distribution does not come with ALSA, and you can't 1.3424 - find ALSA packages built for your particular system, 1.3425 - you can try to install the pre-built ALSA rpm packages from 1.3426 - <a href="http://www.freshrpms.net/" target="_blank"> 1.3427 - <tt>www.freshrpms.net</tt></a>. 1.3428 - Note that installing a newer ALSA could 1.3429 - break sound output if an older version of ALSA was previously 1.3430 - installed on the system, but it will enable JDK compilation. 1.3431 - <blockquote> 1.3432 - Installation: execute as root<br> 1.3433 - [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br> 1.3434 - [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br> 1.3435 - Uninstallation:<br> 1.3436 - [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br> 1.3437 - [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br> 1.3438 - Make sure that you do not link to the static library 1.3439 - (<tt>libasound.a</tt>), 1.3440 - by verifying that the dynamic library (<tt>libasound.so</tt>) is 1.3441 - correctly installed in <tt>/usr/lib</tt>. 1.3442 - </blockquote> 1.3443 - As a last resort you can go to the 1.3444 - <a href="http://www.alsa-project.org" target="_blank"> 1.3445 - Advanced Linux Sound Architecture Site</a> and build it from 1.3446 - source. 1.3447 - <blockquote> 1.3448 - Download driver and library 1.3449 - source tarballs from 1.3450 - <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>. 1.3451 - As root, execute the following 1.3452 - commands (you may need to adapt the version number): 1.3453 - <pre> 1.3454 - <tt> 1.3455 - $ tar xjf alsa-driver-0.9.1.tar.bz2 1.3456 - $ cd alsa-driver-0.9.1 1.3457 - $ ./configure 1.3458 - $ make install 1.3459 - $ cd .. 1.3460 - $ tar xjf alsa-lib-0.9.1.tar.bz2 1.3461 - $ cd alsa-lib-0.9.1 1.3462 - $ ./configure 1.3463 - $ make install 1.3464 - </tt> 1.3465 - </pre> 1.3466 - Should one of the above steps fail, refer to the documentation on 1.3467 - ALSA's home page. 1.3468 - </blockquote> 1.3469 - Note that this is a minimum install that enables 1.3470 - building the JDK platform. To actually use ALSA sound drivers, more 1.3471 - steps are necessary as outlined in the documentation on ALSA's homepage. 1.3472 - <p> 1.3473 - ALSA can be uninstalled by executing <tt>make uninstall</tt> first in 1.3474 - the <tt>alsa-lib-0.9.1</tt> directory and then in 1.3475 - <tt>alsa-driver-0.9.1</tt>. 1.3476 - </blockquote> 1.3477 - There are no ALT* variables to change the assumed locations of ALSA, 1.3478 - the makefiles will expect to find the ALSA include files and library at: 1.3479 - <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>. 1.3480 - </blockquote> 1.3481 - <!-- ------------------------------------------------------ --> 1.3482 - <h4>Windows Specific Dependencies</h4> 1.3483 - <blockquote> 1.3484 - <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong> 1.3485 - <blockquote> 1.3486 - The OpenJDK requires access to a set of unix command tools 1.3487 - on Windows which can be supplied by 1.3488 - <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 1.3489 - <p> 1.3490 - The OpenJDK build requires CYGWIN version 1.5.12 or newer. 1.3491 - Information about CYGWIN can 1.3492 - be obtained from the CYGWIN website at 1.3493 - <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 1.3494 - <p> 1.3495 - By default CYGWIN doesn't install all the tools required for building 1.3496 - the OpenJDK. 1.3497 - Along with the default installation, you need to install 1.3498 - the following tools. 1.3499 - <blockquote> 1.3500 - <table border="1"> 1.3501 - <thead> 1.3502 - <tr> 1.3503 - <td>Binary Name</td> 1.3504 - <td>Category</td> 1.3505 - <td>Package</td> 1.3506 - <td>Description</td> 1.3507 - </tr> 1.3508 - </thead> 1.3509 - <tbody> 1.3510 - <tr> 1.3511 - <td>ar.exe</td> 1.3512 - <td>Devel</td> 1.3513 - <td>binutils</td> 1.3514 - <td>The GNU assembler, linker and binary 1.3515 - utilities</td> 1.3516 - </tr> 1.3517 - <tr> 1.3518 - <td>make.exe</td> 1.3519 - <td>Devel</td> 1.3520 - <td>make</td> 1.3521 - <td>The GNU version of the 'make' utility built for CYGWIN.<br> 1.3522 - <b>NOTE</b>: the Cygwin make can not be used to build the 1.3523 - OpenJDK. You only need it to build your own version of make 1.3524 - (see <a href="#gmake">the GNU make section</a>)</td> 1.3525 - </tr> 1.3526 - <tr> 1.3527 - <td>m4.exe</td> 1.3528 - <td>Interpreters</td> 1.3529 - <td>m4</td> 1.3530 - <td>GNU implementation of the traditional Unix macro 1.3531 - processor</td> 1.3532 - </tr> 1.3533 - <tr> 1.3534 - <td>cpio.exe</td> 1.3535 - <td>Utils</td> 1.3536 - <td>cpio</td> 1.3537 - <td>A program to manage archives of files</td> 1.3538 - </tr> 1.3539 - <tr> 1.3540 - <td>gawk.exe</td> 1.3541 - <td>Utils</td> 1.3542 - <td>awk</td> 1.3543 - <td>Pattern-directed scanning and processing language</td> 1.3544 - </tr> 1.3545 - <tr> 1.3546 - <td>file.exe</td> 1.3547 - <td>Utils</td> 1.3548 - <td>file</td> 1.3549 - <td>Determines file type using 'magic' numbers</td> 1.3550 - </tr> 1.3551 - <tr> 1.3552 - <td>zip.exe</td> 1.3553 - <td>Archive</td> 1.3554 - <td>zip</td> 1.3555 - <td>Package and compress (archive) files</td> 1.3556 - </tr> 1.3557 - <tr> 1.3558 - <td>unzip.exe</td> 1.3559 - <td>Archive</td> 1.3560 - <td>unzip</td> 1.3561 - <td>Extract compressed files in a ZIP archive</td> 1.3562 - </tr> 1.3563 - <tr> 1.3564 - <td>free.exe</td> 1.3565 - <td>System</td> 1.3566 - <td>procps</td> 1.3567 - <td>Display amount of free and used memory in the system</td> 1.3568 - </tr> 1.3569 - </tbody> 1.3570 - </table> 1.3571 - </blockquote> 1.3572 - <p> 1.3573 - Note that the CYGWIN software can conflict with other non-CYGWIN 1.3574 - software on your Windows system. 1.3575 - CYGWIN provides a 1.3576 - <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for 1.3577 - known issues and problems, of particular interest is the 1.3578 - section on 1.3579 - <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> 1.3580 - BLODA (applications that interfere with CYGWIN)</a>. 1.3581 - <p> 1.3582 - <b>WARNING:</b> 1.3583 - Be very careful with <b><tt>link.exe</tt></b>, it will conflict 1.3584 - with the Visual Studio version. You need the Visual Studio 1.3585 - version of <tt>link.exe</tt>, not the CYGWIN one. 1.3586 - So it's important that the Visual Studio paths in PATH preceed 1.3587 - the CYGWIN path <tt>/usr/bin</tt>. 1.3588 - </blockquote> 1.3589 - <strong> Minimalist GNU for Windows (<a name="msys">MinGW/MSYS</a>)</strong> 1.3590 - <blockquote> 1.3591 - Alternatively, the set of unix command tools for the OpenJDK build on 1.3592 - Windows can be supplied by 1.3593 - <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>. 1.3594 - <p> 1.3595 - In addition to the tools which will be installed by default, you have 1.3596 - to manually install the <tt>msys-zip</tt> and <tt>msys-unzip</tt> packages. 1.3597 - This can be easily done with the MinGW command line installer:<br/> 1.3598 - <tt><br/> 1.3599 - mingw-get.exe install msys-zip<br/> 1.3600 - mingw-get.exe install msys-unzip<br/> 1.3601 - </tt> 1.3602 - </p> 1.3603 - </blockquote> 1.3604 - <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong> 1.3605 - <blockquote> 1.3606 - Microsoft DirectX 9.0 SDK (Summer 2004) 1.3607 - headers are required for building 1.3608 - OpenJDK. 1.3609 - This SDK can be downloaded from 1.3610 - <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&displaylang=en" target="_blank"> 1.3611 - Microsoft DirectX 9.0 SDK (Summer 2004)</a>. 1.3612 - If the link above becomes obsolete, the SDK can be found from 1.3613 - <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a> 1.3614 - (search with "DirectX 9.0 SDK Update Summer 2004"). 1.3615 - The location of this SDK can be set with 1.3616 - <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> 1.3617 - but it's normally found via the DirectX environment variable 1.3618 - <tt>DXSDK_DIR</tt>. 1.3619 - </blockquote> 1.3620 - <strong><a name="msvcrNN"><tt>MSVCR100.DLL</tt></a></strong> 1.3621 - <blockquote> 1.3622 - The OpenJDK build requires access to a redistributable 1.3623 - <tt>MSVCR100.DLL</tt>. 1.3624 - This is usually picked up automatically from the redist 1.3625 - directories of Visual Studio 2010. 1.3626 - If this cannot be found set the 1.3627 - <a href="#ALT_MSVCRNN_DLL_PATH"><tt>ALT_MSVCRNN_DLL_PATH</tt></a> 1.3628 - variable to the location of this file. 1.3629 - <p> 1.3630 - </blockquote> 1.3631 - </blockquote> 1.3632 - <!-- ------------------------------------------------------ --> 1.3633 + 1.3634 + </blockquote> <!-- Appendix C --> 1.3635 + 1.3636 + <!-- ====================================================== --> 1.3637 + 1.3638 + <!-- Leave out Appendix D -- 1.3639 + 1.3640 +<hr> 1.3641 +<h2><a name="mapping">Appendix D: Mapping Old to New</a></h2> 1.3642 +<blockquote> 1.3643 + <p>This table will help you convert some idioms of the old build 1.3644 + system to the new build system.</p> 1.3645 + <table summary="Cheat sheet for converting from old to new build system"> 1.3646 + <tr valign="top"> 1.3647 + <th>In the old build system, you used to...</th> 1.3648 + <th>In the new build system, you should ...</th> 1.3649 + </tr> 1.3650 + <tr valign="top"> 1.3651 + <td>run <code>make sanity</code></td> 1.3652 + <td>run <code>bash ./configure</code></td> 1.3653 + </tr> 1.3654 + <tr valign="top"> 1.3655 + <td>set <code>ALT_OUTPUTDIR=build/my-special-output</code></td> 1.3656 + <td>before building the first time: 1.3657 + <br> 1.3658 + <code>cd build/my-special-output</code> 1.3659 + <br> 1.3660 + <code>bash ../../configure</code> 1.3661 + <br> 1.3662 + to build: 1.3663 + <br> 1.3664 + <code>cd build/my-special-output</code> 1.3665 + <br> 1.3666 + <code>make</code> 1.3667 + </td> 1.3668 + </tr> 1.3669 + <tr valign="top"> 1.3670 + <td>set <code>ALT_BOOTDIR=/opt/java/jdk7</code></td> 1.3671 + <td>run <code>configure --with-boot-jdk=/opt/java/jdk7</code></td> 1.3672 + </tr> 1.3673 + <tr valign="top"> 1.3674 + <td>run <code>make ARCH_DATA_MODEL=32</code></td> 1.3675 + <td>run <code>configure --with-target-bits=32</code></td> 1.3676 + </tr> 1.3677 + <tr valign="top"> 1.3678 + <td>set <code>BUILD_CLIENT_ONLY=true</code></td> 1.3679 + <td>run <code>configure --with-jvm-variants=client</code></td> 1.3680 + </tr> 1.3681 + <tr valign="top"> 1.3682 + <td>set <code>ALT_FREETYPE_LIB_PATH=/opt/freetype/lib</code> 1.3683 + and <code>ALT_FREETYPE_HEADERS_PATH=/opt/freetype/include</code></td> 1.3684 + <td>run <code>configure --with-freetype=/opt/freetype</code></td> 1.3685 + </tr> 1.3686 + <tr valign="top"> 1.3687 + <td>set <code>ALT_CUPS_HEADERS_PATH=/opt/cups/include</code></td> 1.3688 + <td>run <code>configure --with-cups=/opt/cups</code></td> 1.3689 + </tr> 1.3690 + <tr valign="top"> 1.3691 + <td>set <code>ALT_OPENWIN_HOME=/opt/X11R6</code></td> 1.3692 + <td>run <code>configure --with-x=/opt/X11R6</code></td> 1.3693 + </tr> 1.3694 + <tr valign="top"> 1.3695 + <td>set <code>ALT_MSVCRNN_DLL_PATH=c:/vc_redist</code></td> 1.3696 + <td>run <code>configure --with-msvcr100dll=/cygdrive/c/vc_redist</code></td> 1.3697 + </tr> 1.3698 + <tr valign="top"> 1.3699 + <td>set <code>ALT_COMPILER_PATH=/opt/my-gcc/bin/gcc</code></td> 1.3700 + <td>run <code>CC=/opt/my-gcc/bin/gcc configure</code> 1.3701 + or <code>CXX=/opt/my-gcc/bin/g++ configure</code> 1.3702 + </td> 1.3703 + </tr> 1.3704 + <tr valign="top"> 1.3705 + <td>set <code>BUILD_HEADLESS_ONLY=true</code></td> 1.3706 + <td>run <code>configure --disable-headful</code></td> 1.3707 + </tr> 1.3708 + <tr valign="top"> 1.3709 + <td>set <code>ALT_DEVTOOLS_PATH=/opt/mytools</code></td> 1.3710 + <td>just run <code>configure</code>, 1.3711 + your tools should be detected automatically. 1.3712 + If you have an unusual configuration, 1.3713 + add the tools directory to your <code>PATH</code>. 1.3714 + </td> 1.3715 + </tr> 1.3716 + <tr valign="top"> 1.3717 + <td>set <code>ALT_DROPS_DIR=/home/user/dropdir</code></td> 1.3718 + <td>source drops are not used anymore</td> 1.3719 + </tr> 1.3720 + <tr valign="top"> 1.3721 + <td>set <code>USE_ONLY_BOOTDIR_TOOLS=true</code></td> 1.3722 + <td>not needed, <code>configure</code> should always do the Right Thing automatically</td> 1.3723 + </tr> 1.3724 + <tr valign="top"> 1.3725 + <td>set <code>ALT_JDK_IMPORT_PATH=/opt/java/import-jdk</code> 1.3726 + or <code>ALT_BUILD_JDK_IMPORT_PATH=/opt/java/import-jdk</code> 1.3727 + </td> 1.3728 + <td>Importing JDKs is no longer possible, 1.3729 + but hotspot can be imported using 1.3730 + <code>--with-import-hotspot</code>. 1.3731 + Documentation on how to achieve a 1.3732 + similar solution will come soon! 1.3733 + </td> 1.3734 + </tr> 1.3735 + <tr valign="top"> 1.3736 + <td>set <code>EXTRA_CFLAGS=-Xfoo</code></td> 1.3737 + <td>run <code>CFLAGS=-Xfoo configure</code></td> 1.3738 + </tr> 1.3739 + <tr valign="top"> 1.3740 + <td>set <code>CROSS_COMPILE_ARCH=i586</code></td> 1.3741 + <td>see <a href="#sec7.3"> section 7.3, Cross-compilation</a></td> 1.3742 + </tr> 1.3743 + <tr valign="top"> 1.3744 + <td>set <code>SKIP_BOOT_CYCLE=false</code></td> 1.3745 + <td>Run <code>make bootcycle-images</code>.</td> 1.3746 + </tr> 1.3747 + </table> 1.3748 + 1.3749 + <h3><a name="variables">Environment/Make Variables</a></h3> 1.3750 + <p> 1.3751 + Some of the 1.3752 + environment or make variables (just called <b>variables</b> in this 1.3753 + document) that can impact the build are: 1.3754 + <blockquote> 1.3755 + <dl> 1.3756 + <dt><a name="path"><code>PATH</code></a> </dt> 1.3757 + <dd>Typically you want to set the <code>PATH</code> to include: 1.3758 + <ul> 1.3759 + <li>The location of the GNU make binary</li> 1.3760 + <li>The location of the Bootstrap JDK <code>java</code> 1.3761 + (see <a href="#bootjdk">Bootstrap JDK</a>)</li> 1.3762 + <li>The location of the C/C++ compilers 1.3763 + (see <a href="#compilers"><code>compilers</code></a>)</li> 1.3764 + <li>The location or locations for the Unix command utilities 1.3765 + (e.g. <code>/usr/bin</code>)</li> 1.3766 + </ul> 1.3767 + </dd> 1.3768 + <dt><code>MILESTONE</code> </dt> 1.3769 + <dd> 1.3770 + The milestone name for the build (<i>e.g.</i>"beta"). 1.3771 + The default value is "internal". 1.3772 + </dd> 1.3773 + <dt><code>BUILD_NUMBER</code> </dt> 1.3774 + <dd> 1.3775 + The build number for the build (<i>e.g.</i> "b27"). 1.3776 + The default value is "b00". 1.3777 + </dd> 1.3778 + <dt><a name="arch_data_model"><code>ARCH_DATA_MODEL</code></a></dt> 1.3779 + <dd>The <code>ARCH_DATA_MODEL</code> variable 1.3780 + is used to specify whether the build is to generate 32-bit or 64-bit 1.3781 + binaries. 1.3782 + The Solaris build supports either 32-bit or 64-bit builds, but 1.3783 + Windows and Linux will support only one, depending on the specific 1.3784 + OS being used. 1.3785 + Normally, setting this variable is only necessary on Solaris. 1.3786 + Set <code>ARCH_DATA_MODEL</code> to <code>32</code> for generating 32-bit binaries, 1.3787 + or to <code>64</code> for generating 64-bit binaries. 1.3788 + </dd> 1.3789 + <dt><a name="ALT_BOOTDIR"><code>ALT_BOOTDIR</code></a></dt> 1.3790 + <dd> 1.3791 + The location of the bootstrap JDK installation. 1.3792 + See <a href="#bootjdk">Bootstrap JDK</a> for more information. 1.3793 + You should always install your own local Bootstrap JDK and 1.3794 + always set <code>ALT_BOOTDIR</code> explicitly. 1.3795 + </dd> 1.3796 + <dt><a name="ALT_OUTPUTDIR"><code>ALT_OUTPUTDIR</code></a> </dt> 1.3797 + <dd> 1.3798 + An override for specifying the (absolute) path of where the 1.3799 + build output is to go. 1.3800 + The default output directory will be build/<i>platform</i>. 1.3801 + </dd> 1.3802 + <dt><a name="ALT_COMPILER_PATH"><code>ALT_COMPILER_PATH</code></a> </dt> 1.3803 + <dd> 1.3804 + The location of the C/C++ compiler. 1.3805 + The default varies depending on the platform. 1.3806 + </dd> 1.3807 + <dt><code><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></code></dt> 1.3808 + <dd> 1.3809 + The location of the <a href="#cacerts">cacerts</a> file. 1.3810 + The default will refer to 1.3811 + <code>jdk/src/share/lib/security/cacerts</code>. 1.3812 + </dd> 1.3813 + <dt><a name="ALT_CUPS_HEADERS_PATH"><code>ALT_CUPS_HEADERS_PATH</code></a> </dt> 1.3814 + <dd> 1.3815 + The location of the CUPS header files. 1.3816 + See <a href="#cups">CUPS information</a> for more information. 1.3817 + If this path does not exist the fallback path is 1.3818 + <code>/usr/include</code>. 1.3819 + </dd> 1.3820 + <dt><a name="ALT_FREETYPE_LIB_PATH"><code>ALT_FREETYPE_LIB_PATH</code></a></dt> 1.3821 + <dd> 1.3822 + The location of the FreeType shared library. 1.3823 + See <a href="#freetype">FreeType information</a> for details. 1.3824 + </dd> 1.3825 + <dt><a name="ALT_FREETYPE_HEADERS_PATH"><code>ALT_FREETYPE_HEADERS_PATH</code></a></dt> 1.3826 + <dd> 1.3827 + The location of the FreeType header files. 1.3828 + See <a href="#freetype">FreeType information</a> for details. 1.3829 + </dd> 1.3830 + <dt><a name="ALT_JDK_DEVTOOLS_PATH"><code>ALT_JDK_DEVTOOLS_PATH</code></a></dt> 1.3831 + <dd> 1.3832 + The default root location of the devtools. 1.3833 + The default value is 1.3834 + <code>$(ALT_SLASH_JAVA)/devtools</code>. 1.3835 + </dd> 1.3836 + <dt><code><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></code> </dt> 1.3837 + <dd> 1.3838 + The location of tools like the 1.3839 + <a href="#zip"><code>zip</code> and <code>unzip</code></a> 1.3840 + binaries, but might also contain the GNU make utility 1.3841 + (<code><i>gmake</i></code>). 1.3842 + So this area is a bit of a grab bag, especially on Windows. 1.3843 + The default value depends on the platform and 1.3844 + Unix Commands being used. 1.3845 + On Linux the default will be 1.3846 + <code>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</code>, 1.3847 + on Solaris 1.3848 + <code>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</code>, 1.3849 + and on Windows with CYGWIN 1.3850 + <code>/usr/bin</code>. 1.3851 + </dd> 1.3852 + <dt><a name="ALT_UNIXCCS_PATH"><code>ALT_UNIXCCS_PATH</code></a></dt> 1.3853 + <dd> 1.3854 + <strong>Solaris only:</strong> 1.3855 + An override for specifying where the Unix CCS 1.3856 + command set are located. 1.3857 + The default location is <code>/usr/ccs/bin</code> 1.3858 + </dd> 1.3859 + <dt><a name="ALT_SLASH_JAVA"><code>ALT_SLASH_JAVA</code></a></dt> 1.3860 + <dd> 1.3861 + The default root location for many of the ALT path locations 1.3862 + of the following ALT variables. 1.3863 + The default value is 1.3864 + <code>"/java"</code> on Solaris and Linux, 1.3865 + <code>"J:"</code> on Windows. 1.3866 + </dd> 1.3867 + 1.3868 + <dt><a name="ALT_OPENWIN_HOME"><code>ALT_OPENWIN_HOME</code></a></dt> 1.3869 + <dd> 1.3870 + The top-level directory of the libraries and include files 1.3871 + for the platform's 1.3872 + graphical programming environment. 1.3873 + The default location is platform specific. 1.3874 + For example, on Linux it defaults to <code>/usr/X11R6/</code>. 1.3875 + </dd> 1.3876 + <dt><strong>Windows specific:</strong></dt> 1.3877 + <dd> 1.3878 + <dl> 1.3879 + <dt><a name="ALT_WINDOWSSDKDIR"><code>ALT_WINDOWSSDKDIR</code></a> </dt> 1.3880 + <dd> 1.3881 + The location of the 1.3882 + Microsoft Windows SDK where some tools will be 1.3883 + located. 1.3884 + The default is whatever WINDOWSSDKDIR is set to 1.3885 + (or WindowsSdkDir) or the path 1.3886 + <br> 1.3887 + <code>c:\Program Files\Microsoft SDKs\Windows\v7.0a</code> 1.3888 + </dd> 1.3889 + <dt><code><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></code> </dt> 1.3890 + <dd> 1.3891 + The location of the 1.3892 + <a href="#dxsdk">Microsoft DirectX 9 SDK</a>. 1.3893 + The default will be to try and use the DirectX environment 1.3894 + variable <code>DXSDK_DIR</code>, 1.3895 + failing that, look in <code>C:/DXSDK</code>. 1.3896 + </dd> 1.3897 + <dt><code><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></code> </dt> 1.3898 + <dd> 1.3899 + The location of the 1.3900 + <a href="#msvcrNN"><code>MSVCR100.DLL</code></a>. 1.3901 + </dd> 1.3902 + </dl> 1.3903 + </dd> 1.3904 + <dt><strong>Cross-Compilation Support:</strong></dt> 1.3905 + <dd> 1.3906 + <dl> 1.3907 + <dt><a name="CROSS_COMPILE_ARCH"><code>CROSS_COMPILE_ARCH</code></a> </dt> 1.3908 + <dd> 1.3909 + Set to the target architecture of a 1.3910 + cross-compilation build. If set, this 1.3911 + variable is used to signify that we are 1.3912 + cross-compiling. The expectation 1.3913 + is that 1.3914 + <a href="#ALT_COMPILER_PATH"><code>ALT_COMPILER_PATH</code></a> 1.3915 + is set 1.3916 + to point to the cross-compiler and that any 1.3917 + cross-compilation specific flags 1.3918 + are passed using 1.3919 + <a href="#EXTRA_CFLAGS"><code>EXTRA_CFLAGS</code></a>. 1.3920 + The <a href="#ALT_OPENWIN_HOME"><code>ALT_OPENWIN_HOME</code></a> 1.3921 + variable should 1.3922 + also be set to point to the graphical header files 1.3923 + (e.g. X11) provided with 1.3924 + the cross-compiler. 1.3925 + When cross-compiling we skip execution of any demos 1.3926 + etc that may be built, and 1.3927 + also skip binary-file verification. 1.3928 + </dd> 1.3929 + <dt><code><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></code> </dt> 1.3930 + <dd> 1.3931 + Used to pass cross-compilation options to the 1.3932 + cross-compiler. 1.3933 + These are added to the <code>CFLAGS</code> 1.3934 + and <code>CXXFLAGS</code> variables. 1.3935 + </dd> 1.3936 + <dt><code><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></code> </dt> 1.3937 + <dd> 1.3938 + Used primarily for cross-compilation builds 1.3939 + (and always set in that case) 1.3940 + this variable indicates that tools from the 1.3941 + boot JDK should be used during 1.3942 + the build process, not the tools 1.3943 + (<code>javac</code>, <code>javah</code>, <code>jar</code>) 1.3944 + just built (which can't execute on the build host). 1.3945 + </dd> 1.3946 + <dt><code><a name="HOST_CC">HOST_CC</a></code> </dt> 1.3947 + <dd> 1.3948 + The location of the C compiler to generate programs 1.3949 + to run on the build host. 1.3950 + Some parts of the build generate programs that are 1.3951 + then compiled and executed 1.3952 + to produce other parts of the build. Normally the 1.3953 + primary C compiler is used 1.3954 + to do this, but when cross-compiling that would be 1.3955 + the cross-compiler and the 1.3956 + resulting program could not be executed. 1.3957 + On Linux this defaults to <code>/usr/bin/gcc</code>; 1.3958 + on other platforms it must be 1.3959 + set explicitly. 1.3960 + </dd> 1.3961 + </dl> 1.3962 + <dt><strong>Specialized Build Options:</strong></dt> 1.3963 + <dd> 1.3964 + Some build variables exist to support specialized build 1.3965 + environments and/or specialized 1.3966 + build products. Their use is only supported in those contexts: 1.3967 + <dl> 1.3968 + <dt><code><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></code> </dt> 1.3969 + <dd> 1.3970 + Indicates this build will only contain the 1.3971 + Hotspot client VM. In addition to 1.3972 + controlling the Hotspot build target, 1.3973 + it ensures that we don't try to copy 1.3974 + any server VM files/directories, 1.3975 + and defines a default <code>jvm.cfg</code> file 1.3976 + suitable for a client-only environment. 1.3977 + Using this in a 64-bit build will 1.3978 + generate a sanity warning as 64-bit client 1.3979 + builds are not directly supported. 1.3980 + </dd> 1.3981 + <dt><code><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</code> </dt> 1.3982 + <dd> 1.3983 + Used when the build environment has no graphical 1.3984 + capabilities at all. This 1.3985 + excludes building anything that requires graphical 1.3986 + libraries to be available. 1.3987 + </dd> 1.3988 + <dt><code><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</code> </dt> 1.3989 + <dd> 1.3990 + Used to indicate this is a build of the Oracle 1.3991 + Java SE Embedded product. 1.3992 + This will enable the directives included in the 1.3993 + SE-Embedded specific build 1.3994 + files. 1.3995 + </dd> 1.3996 + <dt><code><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></code> </dt> 1.3997 + <dd> 1.3998 + If set to false, disables the use of mmap by the 1.3999 + zip utility. Otherwise, 1.4000 + mmap will be used. 1.4001 + </dd> 1.4002 + <dt><code><a name="COMPRESS_JARS"></a>COMPRESS_JARS</code> </dt> 1.4003 + <dd> 1.4004 + If set to true, causes certain jar files that 1.4005 + would otherwise be built without 1.4006 + compression, to use compression. 1.4007 + </dd> 1.4008 + </dl> 1.4009 + </dd> 1.4010 + </dl> 1.4011 + </blockquote> 1.4012 + 1.4013 +</blockquote> <!-- Appendix D --> 1.4014 + 1.4015 + <!-- ====================================================== --> 1.4016 <hr> 1.4017 - <h2><a name="creating">Creating the Build</a></h2> 1.4018 - <blockquote> 1.4019 - Once a machine is setup to build the OpenJDK, 1.4020 - the steps to create the build are fairly simple. 1.4021 - The various ALT settings can either be made into variables 1.4022 - or can be supplied on the 1.4023 - <a href="#gmake"><tt><i>gmake</i></tt></a> 1.4024 - command. 1.4025 - <ol> 1.4026 - <li>Use the sanity rule to double check all the ALT settings: 1.4027 - <blockquote> 1.4028 - <tt> 1.4029 - <i>gmake</i> 1.4030 - sanity 1.4031 - [ARCH_DATA_MODEL=<i>32 or 64</i>] 1.4032 - [other "ALT_" overrides] 1.4033 - </tt> 1.4034 - </blockquote> 1.4035 - </li> 1.4036 - <li>Start the build with the command: 1.4037 - <blockquote> 1.4038 - <tt> 1.4039 - <i>gmake</i> 1.4040 - [ARCH_DATA_MODEL=<i>32 or 64</i>] 1.4041 - [ALT_OUTPUTDIR=<i>output_directory</i>] 1.4042 - [other "ALT_" overrides] 1.4043 - </tt> 1.4044 - </blockquote> 1.4045 - </li> 1.4046 - </ol> 1.4047 - <p> 1.4048 - <strong>Solaris:</strong> 1.4049 - Note that ARCH_DATA_MODEL is really only needed on Solaris to 1.4050 - indicate you want to built the 64-bit version. 1.4051 - And before the Solaris 64-bit binaries can be used, they 1.4052 - must be merged with the binaries from a separate 32-bit build. 1.4053 - The merged binaries may then be used in either 32-bit or 64-bit mode, with 1.4054 - the selection occurring at runtime 1.4055 - with the <tt>-d32</tt> or <tt>-d64</tt> options. 1.4056 - </blockquote> 1.4057 - <!-- ------------------------------------------------------ --> 1.4058 + <p>End of OpenJDK README-builds.html document.<br>Please come again! 1.4059 <hr> 1.4060 - <h2><a name="testing">Testing the Build</a></h2> 1.4061 - <blockquote> 1.4062 - When the build is completed, you should see the generated 1.4063 - binaries and associated files in the <tt>j2sdk-image</tt> 1.4064 - directory in the output directory. 1.4065 - The default output directory is 1.4066 - <tt>build/<i>platform</i></tt>, 1.4067 - where <tt><i>platform</i></tt> is one of 1.4068 - <blockquote> 1.4069 - <ul> 1.4070 - <li><tt>solaris-sparc</tt></li> 1.4071 - <li><tt>solaris-sparcv9</tt></li> 1.4072 - <li><tt>solaris-i586</tt></li> 1.4073 - <li><tt>solaris-amd64</tt></li> 1.4074 - <li><tt>linux-i586</tt></li> 1.4075 - <li><tt>linux-amd64</tt></li> 1.4076 - <li><tt>windows-i586</tt></li> 1.4077 - <li><tt>windows-amd64</tt></li> 1.4078 - </ul> 1.4079 - </blockquote> 1.4080 - In particular, the 1.4081 - <tt>build/<i>platform</i>/j2sdk-image/bin</tt> 1.4082 - directory should contain executables for the 1.4083 - OpenJDK tools and utilities. 1.4084 - <p> 1.4085 - You can test that the build completed properly by using the build 1.4086 - to run the various demos that you will find in the 1.4087 - <tt>build/<i>platform</i>/j2sdk-image/demo</tt> 1.4088 - directory. 1.4089 - <p> 1.4090 - The provided regression tests can be run with the <tt>jtreg</tt> 1.4091 - utility from 1.4092 - <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>. 1.4093 - </blockquote> 1.4094 - <!-- ------------------------------------------------------ --> 1.4095 - <hr> 1.4096 - <h2><a name="variables">Environment/Make Variables</a></h2> 1.4097 - <p> 1.4098 - Some of the 1.4099 - environment or make variables (just called <b>variables</b> in this 1.4100 - document) that can impact the build are: 1.4101 - <blockquote> 1.4102 - <dl> 1.4103 - <dt><a name="path"><tt>PATH</tt></a> </dt> 1.4104 - <dd>Typically you want to set the <tt>PATH</tt> to include: 1.4105 - <ul> 1.4106 - <li>The location of the GNU make binary</li> 1.4107 - <li>The location of the Bootstrap JDK <tt>java</tt> 1.4108 - (see <a href="#bootjdk">Bootstrap JDK</a>)</li> 1.4109 - <li>The location of the C/C++ compilers 1.4110 - (see <a href="#compilers"><tt>compilers</tt></a>)</li> 1.4111 - <li>The location or locations for the Unix command utilities 1.4112 - (e.g. <tt>/usr/bin</tt>)</li> 1.4113 - </ul> 1.4114 - </dd> 1.4115 - <dt><tt>MILESTONE</tt> </dt> 1.4116 - <dd> 1.4117 - The milestone name for the build (<i>e.g.</i>"beta"). 1.4118 - The default value is "internal". 1.4119 - </dd> 1.4120 - <dt><tt>BUILD_NUMBER</tt> </dt> 1.4121 - <dd> 1.4122 - The build number for the build (<i>e.g.</i> "b27"). 1.4123 - The default value is "b00". 1.4124 - </dd> 1.4125 - <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt> 1.4126 - <dd>The <tt>ARCH_DATA_MODEL</tt> variable 1.4127 - is used to specify whether the build is to generate 32-bit or 64-bit 1.4128 - binaries. 1.4129 - The Solaris build supports either 32-bit or 64-bit builds, but 1.4130 - Windows and Linux will support only one, depending on the specific 1.4131 - OS being used. 1.4132 - Normally, setting this variable is only necessary on Solaris. 1.4133 - Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries, 1.4134 - or to <tt>64</tt> for generating 64-bit binaries. 1.4135 - </dd> 1.4136 - <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt> 1.4137 - <dd> 1.4138 - The location of the bootstrap JDK installation. 1.4139 - See <a href="#bootjdk">Bootstrap JDK</a> for more information. 1.4140 - You should always install your own local Bootstrap JDK and 1.4141 - always set <tt>ALT_BOOTDIR</tt> explicitly. 1.4142 - </dd> 1.4143 - <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt> 1.4144 - <dd> 1.4145 - The location of a previously built JDK installation. 1.4146 - See <a href="#importjdk">Optional Import JDK</a> for more information. 1.4147 - </dd> 1.4148 - <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt> 1.4149 - <dd> 1.4150 - An override for specifying the (absolute) path of where the 1.4151 - build output is to go. 1.4152 - The default output directory will be build/<i>platform</i>. 1.4153 - </dd> 1.4154 - <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt> 1.4155 - <dd> 1.4156 - The location of the C/C++ compiler. 1.4157 - The default varies depending on the platform. 1.4158 - </dd> 1.4159 - <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt> 1.4160 - <dd> 1.4161 - The location of the <a href="#cacerts">cacerts</a> file. 1.4162 - The default will refer to 1.4163 - <tt>jdk/src/share/lib/security/cacerts</tt>. 1.4164 - </dd> 1.4165 - <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt> 1.4166 - <dd> 1.4167 - The location of the CUPS header files. 1.4168 - See <a href="#cups">CUPS information</a> for more information. 1.4169 - If this path does not exist the fallback path is 1.4170 - <tt>/usr/include</tt>. 1.4171 - </dd> 1.4172 - <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt> 1.4173 - <dd> 1.4174 - The location of the FreeType shared library. 1.4175 - See <a href="#freetype">FreeType information</a> for details. 1.4176 - </dd> 1.4177 - <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt> 1.4178 - <dd> 1.4179 - The location of the FreeType header files. 1.4180 - See <a href="#freetype">FreeType information</a> for details. 1.4181 - </dd> 1.4182 - <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt> 1.4183 - <dd> 1.4184 - The default root location of the devtools. 1.4185 - The default value is 1.4186 - <tt>$(ALT_SLASH_JAVA)/devtools</tt>. 1.4187 - </dd> 1.4188 - <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt> 1.4189 - <dd> 1.4190 - The location of tools like the 1.4191 - <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a> 1.4192 - binaries, but might also contain the GNU make utility 1.4193 - (<tt><i>gmake</i></tt>). 1.4194 - So this area is a bit of a grab bag, especially on Windows. 1.4195 - The default value depends on the platform and 1.4196 - Unix Commands being used. 1.4197 - On Linux the default will be 1.4198 - <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>, 1.4199 - on Solaris 1.4200 - <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>, 1.4201 - and on Windows with CYGWIN 1.4202 - <tt>/usr/bin</tt>. 1.4203 - </dd> 1.4204 - <dt><tt><a name="ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> </dt> 1.4205 - <dd> 1.4206 - The location of any source drop bundles 1.4207 - (see <a href="#drops">Managing the Source Drops</a>). 1.4208 - The default will be 1.4209 - <tt>$(ALT_JDK_DEVTOOLS_PATH)/share/jdk8-drops</tt>. 1.4210 - </dd> 1.4211 - <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt> 1.4212 - <dd> 1.4213 - <strong>Solaris only:</strong> 1.4214 - An override for specifying where the Unix CCS 1.4215 - command set are located. 1.4216 - The default location is <tt>/usr/ccs/bin</tt> 1.4217 - </dd> 1.4218 - <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt> 1.4219 - <dd> 1.4220 - The default root location for many of the ALT path locations 1.4221 - of the following ALT variables. 1.4222 - The default value is 1.4223 - <tt>"/java"</tt> on Solaris and Linux, 1.4224 - <tt>"J:"</tt> on Windows. 1.4225 - </dd> 1.4226 - <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt> 1.4227 - <dd> 1.4228 - These are useful in managing builds on multiple platforms. 1.4229 - The default network location for all of the import JDK images 1.4230 - for all platforms. 1.4231 - If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt> 1.4232 - is not set, this directory will be used and should contain 1.4233 - the following directories: 1.4234 - <tt>solaris-sparc</tt>, 1.4235 - <tt>solaris-i586</tt>, 1.4236 - <tt>solaris-sparcv9</tt>, 1.4237 - <tt>solaris-amd64</tt>, 1.4238 - <tt>linux-i586</tt>, 1.4239 - <tt>linux-amd64</tt>, 1.4240 - <tt>windows-i586</tt>, 1.4241 - and 1.4242 - <tt>windows-amd64</tt>. 1.4243 - Where each of these directories contain the import JDK image 1.4244 - for that platform. 1.4245 - </dd> 1.4246 - <dt><a name="ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a></dt> 1.4247 - <dd> 1.4248 - The top-level directory of the libraries and include files for the platform's 1.4249 - graphical programming environment. The default location is platform specific. 1.4250 - For example, on Linux it defaults to <tt>/usr/X11R6/</tt>. 1.4251 - </dd> 1.4252 - <dt><strong>Windows specific:</strong></dt> 1.4253 - <dd> 1.4254 - <dl> 1.4255 - <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt> 1.4256 - <dd> 1.4257 - The location of the 1.4258 - Microsoft Windows SDK where some tools will be 1.4259 - located. 1.4260 - The default is whatever WINDOWSSDKDIR is set to 1.4261 - (or WindowsSdkDir) or the path 1.4262 - <br> 1.4263 - <tt>c:\Program Files\Microsoft SDKs\Windows\v7.0a</tt> 1.4264 - </dd> 1.4265 - <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt> 1.4266 - <dd> 1.4267 - The location of the 1.4268 - <a href="#dxsdk">Microsoft DirectX 9 SDK</a>. 1.4269 - The default will be to try and use the DirectX environment 1.4270 - variable <tt>DXSDK_DIR</tt>, 1.4271 - failing that, look in <tt>C:/DXSDK</tt>. 1.4272 - </dd> 1.4273 - <dt><tt><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt> 1.4274 - <dd> 1.4275 - The location of the 1.4276 - <a href="#msvcrNN"><tt>MSVCR100.DLL</tt></a>. 1.4277 - </dd> 1.4278 - </dl> 1.4279 - </dd> 1.4280 - <dt><strong>Cross-Compilation Support:</strong></dt> 1.4281 - <dd> 1.4282 - <dl> 1.4283 - <dt><a name="CROSS_COMPILE_ARCH"><tt>CROSS_COMPILE_ARCH</tt></a> </dt> 1.4284 - <dd> 1.4285 - Set to the target architecture of a cross-compilation build. If set, this 1.4286 - variable is used to signify that we are cross-compiling. The expectation 1.4287 - is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set 1.4288 - to point to the cross-compiler and that any cross-compilation specific flags 1.4289 - are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>. 1.4290 - The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should 1.4291 - also be set to point to the graphical header files (e.g. X11) provided with 1.4292 - the cross-compiler. 1.4293 - When cross-compiling we skip execution of any demos etc that may be built, and 1.4294 - also skip binary-file verification. 1.4295 - </dd> 1.4296 - <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt> 1.4297 - <dd> 1.4298 - Used to pass cross-compilation options to the cross-compiler. 1.4299 - These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables. 1.4300 - </dd> 1.4301 - <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt> 1.4302 - <dd> 1.4303 - Used primarily for cross-compilation builds (and always set in that case) 1.4304 - this variable indicates that tools from the boot JDK should be used during 1.4305 - the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>) 1.4306 - just built (which can't execute on the build host). 1.4307 - </dd> 1.4308 - <dt><tt><a name="HOST_CC">HOST_CC</a></tt> </dt> 1.4309 - <dd> 1.4310 - The location of the C compiler to generate programs to run on the build host. 1.4311 - Some parts of the build generate programs that are then compiled and executed 1.4312 - to produce other parts of the build. Normally the primary C compiler is used 1.4313 - to do this, but when cross-compiling that would be the cross-compiler and the 1.4314 - resulting program could not be executed. 1.4315 - On Linux this defaults to <tt>/usr/bin/gcc</tt>; on other platforms it must be 1.4316 - set explicitly. 1.4317 - </dd> 1.4318 - </dl> 1.4319 - <dt><strong>Specialized Build Options:</strong></dt> 1.4320 - <dd> 1.4321 - Some build variables exist to support specialized build environments and/or specialized 1.4322 - build products. Their use is only supported in those contexts: 1.4323 - <dl> 1.4324 - <dt><tt><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></tt> </dt> 1.4325 - <dd> 1.4326 - Indicates this build will only contain the Hotspot client VM. In addition to 1.4327 - controlling the Hotspot build target, it ensures that we don't try to copy 1.4328 - any server VM files/directories, and defines a default <tt>jvm.cfg</tt> file 1.4329 - suitable for a client-only environment. Using this in a 64-bit build will 1.4330 - generate a sanity warning as 64-bit client builds are not directly supported. 1.4331 - </dd> 1.4332 - <dt><tt><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</tt> </dt> 1.4333 - <dd> 1.4334 - Used when the build environment has no graphical capabilities at all. This 1.4335 - excludes building anything that requires graphical libraries to be available. 1.4336 - </dd> 1.4337 - <dt><tt><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</tt> </dt> 1.4338 - <dd> 1.4339 - Used to indicate this is a build of the Oracle Java SE Embedded product. 1.4340 - This will enable the directives included in the SE-Embedded specific build 1.4341 - files. 1.4342 - </dd> 1.4343 - <dt><tt><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></tt> </dt> 1.4344 - <dd> 1.4345 - If set to false, disables the use of mmap by the zip utility. Otherwise, 1.4346 - mmap will be used. 1.4347 - </dd> 1.4348 - <dt><tt><a name="COMPRESS_JARS"></a>COMPRESS_JARS</tt> </dt> 1.4349 - <dd> 1.4350 - If set to true, causes certain jar files that would otherwise be built without 1.4351 - compression, to use compression. 1.4352 - </dd> 1.4353 - </dl> 1.4354 - </dd> 1.4355 - </dl> 1.4356 - </blockquote> 1.4357 - <!-- ------------------------------------------------------ --> 1.4358 - <hr> 1.4359 - <h2><a name="hints">Hints and Tips</a></h2> 1.4360 - <blockquote> 1.4361 - You don't have to use all these hints and tips, and in fact people do actually 1.4362 - build with systems that contradict these, but they might prove to be 1.4363 - helpful to some. 1.4364 - <ul> 1.4365 - <li> 1.4366 - If <tt>make sanity</tt> does not work, find out why, fix that 1.4367 - before going any further. Or at least understand what the 1.4368 - complaints are from it. 1.4369 - </li> 1.4370 - <li> 1.4371 - JDK: Keep in mind that you are building a JDK, but you need 1.4372 - a JDK (BOOTDIR JDK) to build this JDK. 1.4373 - </li> 1.4374 - <li> 1.4375 - Ant: The ant utility is a java application and besides having 1.4376 - ant available to you, it's important that ant finds the right 1.4377 - java to run with. Make sure you can type <tt>ant -version</tt> 1.4378 - and get clean results with no error messages. 1.4379 - </li> 1.4380 - <li> 1.4381 - Linux: Try and favor the system packages over building your own 1.4382 - or getting packages from other areas. 1.4383 - Most Linux builds should be possible with the system's 1.4384 - available packages. 1.4385 - </li> 1.4386 - <li> 1.4387 - Solaris: Typically you will need to get compilers on your systems 1.4388 - and occasionally GNU make 3.81 if a gmake binary is not available. 1.4389 - The gmake binary might not be 3.81, be careful. 1.4390 - </li> 1.4391 - <li> 1.4392 - Windows VS2010: 1.4393 - <ul> 1.4394 - <li> 1.4395 - Only the C++ part of VS2010 is needed. 1.4396 - Try to let the installation go to the default install directory. 1.4397 - Always reboot your system after installing VS2010. 1.4398 - The system environment variable VS100COMNTOOLS should be 1.4399 - set in your environment. 1.4400 - </li> 1.4401 - <li> 1.4402 - Make sure that TMP and TEMP are also set in the environment 1.4403 - and refer to Windows paths that exist, like <tt>C:\temp</tt>, 1.4404 - not <tt>/tmp</tt>, not <tt>/cygdrive/c/temp</tt>, and not <tt>C:/temp</tt>. 1.4405 - <tt>C:\temp</tt> is just an example, it is assumed that this area is 1.4406 - private to the user, so by default after installs you should 1.4407 - see a unique user path in these variables. 1.4408 - </li> 1.4409 - <li> 1.4410 - You need to use vsvars32.bat or vsvars64.bat to get the 1.4411 - PATH, INCLUDE, LIB, LIBPATH, and WINDOWSSDKDIR 1.4412 - variables set in your shell environment. 1.4413 - These bat files are not easy to use from a shell environment. 1.4414 - However, there is a script placed in the root jdk8 repository called 1.4415 - vsvars.sh that can help, it should only be done once in a shell 1.4416 - that will be doing the build, e.g.<br> 1.4417 - <tt>sh ./make/scripts/vsvars.sh -v10 > settings<br> 1.4418 - eval `cat settings`</tt><br> 1.4419 - Or just <tt>eval `sh ./make/scripts/vsvars.sh -v10`</tt>. 1.4420 - </li> 1.4421 - </ul> 1.4422 - </li> 1.4423 - <li> 1.4424 - Windows: PATH order is critical, see the 1.4425 - <a href="#paths">paths</a> section for more information. 1.4426 - </li> 1.4427 - <li> 1.4428 - Windows 64bit builds: Use ARCH_DATA_MODEL=64. 1.4429 - </li> 1.4430 - </ul> 1.4431 - </blockquote> 1.4432 - <!-- ------------------------------------------------------ --> 1.4433 - <hr> 1.4434 - <h2><a name="troubleshooting">Troubleshooting</a></h2> 1.4435 - <blockquote> 1.4436 - A build can fail for any number of reasons. 1.4437 - Most failures 1.4438 - are a result of trying to build in an environment in which all the 1.4439 - pre-build requirements have not been met. 1.4440 - The first step in 1.4441 - troubleshooting a build failure is to recheck that you have satisfied 1.4442 - all the pre-build requirements for your platform. 1.4443 - Look for the check list of the platform you are building on in the 1.4444 - <a href="#contents">Table of Contents</a>. 1.4445 - <p> 1.4446 - You can validate your build environment by using the <tt>sanity</tt> 1.4447 - target. 1.4448 - Any errors listed 1.4449 - will stop the build from starting, and any warnings may result in 1.4450 - a flawed product build. 1.4451 - We strongly encourage you to evaluate every 1.4452 - sanity check warning and fix it if required, before you proceed 1.4453 - further with your build. 1.4454 - <p> 1.4455 - Some of the more common problems with builds are briefly described 1.4456 - below, with suggestions for remedies. 1.4457 - <ul> 1.4458 - <li> 1.4459 - <b>Corrupted Bundles on Windows:</b> 1.4460 - <blockquote> 1.4461 - Some virus scanning software has been known to corrupt the 1.4462 - downloading of zip bundles. 1.4463 - It may be necessary to disable the 'on access' or 'real time' 1.4464 - virus scanning features to prevent this corruption. 1.4465 - This type of "real time" virus scanning can also slow down the 1.4466 - build process significantly. 1.4467 - Temporarily disabling the feature, or excluding the build 1.4468 - output directory may be necessary to get correct and faster builds. 1.4469 - </blockquote> 1.4470 - </li> 1.4471 - <li> 1.4472 - <b>Slow Builds:</b> 1.4473 - <blockquote> 1.4474 - If your build machine seems to be overloaded from too many 1.4475 - simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt> 1.4476 - variable to <tt>1</tt> (if you're using a multiple CPU 1.4477 - machine, setting it to more than the the number of CPUs is probably 1.4478 - not a good idea). 1.4479 - <p> 1.4480 - Creating the javadocs can be very slow, if you are running 1.4481 - javadoc, consider skipping that step. 1.4482 - <p> 1.4483 - Faster hardware and more RAM always helps too. 1.4484 - The VM build tends to be CPU intensive (many C++ compiles), 1.4485 - and the rest of the JDK will often be disk intensive. 1.4486 - <p> 1.4487 - Faster compiles are possible using a tool called 1.4488 - <a href="http://ccache.samba.org/" target="_blank">ccache</a>. 1.4489 - </blockquote> 1.4490 - </li> 1.4491 - <li> 1.4492 - <b>File time issues:</b> 1.4493 - <blockquote> 1.4494 - If you see warnings that refer to file time stamps, e.g. 1.4495 - <blockquote> 1.4496 - <i>Warning message:</i><tt> File `xxx' has modification time in 1.4497 - the future.</tt> 1.4498 - <br> 1.4499 - <i>Warning message:</i> <tt> Clock skew detected. Your build may 1.4500 - be incomplete.</tt> 1.4501 - </blockquote> 1.4502 - These warnings can occur when the clock on the build machine is out of 1.4503 - sync with the timestamps on the source files. Other errors, apparently 1.4504 - unrelated but in fact caused by the clock skew, can occur along with 1.4505 - the clock skew warnings. These secondary errors may tend to obscure the 1.4506 - fact that the true root cause of the problem is an out-of-sync clock. 1.4507 - For example, an out-of-sync clock has been known to cause an old 1.4508 - version of javac to be used to compile some files, resulting in errors 1.4509 - when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword 1.4510 - in the 1.4 source code. 1.4511 - <p> 1.4512 - If you see these warnings, reset the clock on the build 1.4513 - machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory 1.4514 - containing the build output, and restart the build from the beginning. 1.4515 - </blockquote> 1.4516 - </li> 1.4517 - <li> 1.4518 - <b>Error message: <tt>Trouble writing out table to disk</tt></b> 1.4519 - <blockquote> 1.4520 - Increase the amount of swap space on your build machine. 1.4521 - </blockquote> 1.4522 - </li> 1.4523 - <li> 1.4524 - <b>Error Message: <tt>libstdc++ not found:</tt></b> 1.4525 - <blockquote> 1.4526 - This is caused by a missing libstdc++.a library. 1.4527 - This is installed as part of a specific package 1.4528 - (e.g. libstdc++.so.devel.386). 1.4529 - By default some 64-bit Linux versions (e.g. Fedora) 1.4530 - only install the 64-bit version of the libstdc++ package. 1.4531 - Various parts of the JDK build require a static 1.4532 - link of the C++ runtime libraries to allow for maximum 1.4533 - portability of the built images. 1.4534 - </blockquote> 1.4535 - </li> 1.4536 - <li> 1.4537 - <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b> 1.4538 - <blockquote> 1.4539 - This is probably an issue with SELinux (See 1.4540 - <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank"> 1.4541 - http://en.wikipedia.org/wiki/SELinux</a>). 1.4542 - Parts of the VM is built without the <tt>-fPIC</tt> for 1.4543 - performance reasons. 1.4544 - <p> 1.4545 - To completely disable SELinux: 1.4546 - <ol> 1.4547 - <li><tt>$ su root</tt></li> 1.4548 - <li><tt># system-config-securitylevel</tt></li> 1.4549 - <li><tt>In the window that appears, select the SELinux tab</tt></li> 1.4550 - <li><tt>Disable SELinux</tt></li> 1.4551 - </ol> 1.4552 - <p> 1.4553 - Alternatively, instead of completely disabling it you could 1.4554 - disable just this one check. 1.4555 - <ol> 1.4556 - <li>Select System->Administration->SELinux Management</li> 1.4557 - <li>In the SELinux Management Tool which appears, 1.4558 - select "Boolean" from the menu on the left</li> 1.4559 - <li>Expand the "Memory Protection" group</li> 1.4560 - <li>Check the first item, labeled 1.4561 - "Allow all unconfined executables to use libraries requiring text relocation ..."</li> 1.4562 - </ol> 1.4563 - </blockquote> 1.4564 - </li> 1.4565 - <li> 1.4566 - <b>Windows Error Messages:</b><br> 1.4567 - <tt>*** fatal error - couldn't allocate heap, ... </tt><br> 1.4568 - <tt>rm fails with "Directory not empty"</tt><br> 1.4569 - <tt>unzip fails with "cannot create ... Permission denied"</tt><br> 1.4570 - <tt>unzip fails with "cannot create ... Error 50"</tt><br> 1.4571 - <blockquote> 1.4572 - The CYGWIN software can conflict with other non-CYGWIN 1.4573 - software. See the CYGWIN FAQ section on 1.4574 - <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> 1.4575 - BLODA (applications that interfere with CYGWIN)</a>. 1.4576 - </blockquote> 1.4577 - </li> 1.4578 - <li> 1.4579 - <b>Windows Error Message: <tt>spawn failed</tt></b> 1.4580 - <blockquote> 1.4581 - Try rebooting the system, or there could be some kind of 1.4582 - issue with the disk or disk partition being used. 1.4583 - Sometimes it comes with a "Permission Denied" message. 1.4584 - </blockquote> 1.4585 - </li> 1.4586 - </ul> 1.4587 - </blockquote> 1.4588 - <!-- ------------------------------------------------------ --> 1.4589 - <hr> 1.4590 - <h2><a name="newbuild">The New Build</a></h2> 1.4591 - <blockquote> 1.4592 - The <a href="http://openjdk.java.net/projects/build-infra/"> 1.4593 - Build Infrastructure project</a> is working on a new 1.4594 - build. For information on how to try it out, please see the 1.4595 - <a href="http://openjdk.java.net/projects/build-infra/guide.html"> 1.4596 - Build Infra User Guide</a> 1.4597 - </blockquote> 1.4598 - <hr> 1.4599 + 1.4600 </body> 1.4601 </html>