1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
   2 <html>
   3     <head>
   4         <title>OpenJDK Build README</title>
   5     </head>
   6     <body style="background-color:lightcyan">
   7         <!-- ====================================================== -->
   8         <table width="100%">
   9             <tr>
  10                 <td align="center">
  11                     <img alt="OpenJDK" 
  12                          src="http://openjdk.java.net/images/openjdk.png" 
  13                          width=256 />
  14                 </td>
  15             </tr>
  16             <tr>
  17                 <td align=center>
  18                     <h1>OpenJDK Build README</h1>
  19                 </td>
  20             </tr>
  21         </table>
  22         <!-- ------------------------------------------------------ --> 
  23         <hr>
  24         <h2><a name="introduction">Introduction</a></h2>
  25         <blockquote>
  26             <p>
  27             This README file contains build instructions for the 
  28             <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
  29             Building the source code for the 
  30             OpenJDK
  31             requires
  32             a certain degree of technical expertise.
  33         </blockquote>
  34         <!-- ------------------------------------------------------ -->
  35         <hr>
  36         <h2><a name="contents">Contents</a></h2>
  37         <blockquote>
  38             <ul>
  39                 <li><a href="#introduction">Introduction</a></li>
  40                 <li><a href="#MBE">Minimum Build Environments</a></li>
  41                 <li><a href="#SDBE">Specific Developer Build Environments</a></li>
  42                     <ul>
  43                         <li><a href="#fedora">Fedora Linux</a> </li>
  44                         <li><a href="#centos">CentOS Linux</a> </li>
  45                         <li><a href="#ubuntu">Ubuntu Linux</a> </li>
  46                     </ul>
  47                 <li><a href="#directories">Source Directory Structure</a> </li>
  48                 <li><a href="#building">Build Information</a>
  49                     <ul>
  50                         <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
  51                         <li><a href="#linux">Basic Linux System Setup</a> </li>
  52                         <li><a href="#solaris">Basic Solaris System Setup</a> </li>
  53                         <li><a href="#windows">Basic Windows System Setup</a> </li>
  54                         <li><a href="#dependencies">Build Dependencies</a> </li>
  55                         <ul>
  56                             <li><a href="#bootjdk">Bootstrap JDK</a> </li>
  57                             <li><a href="#binaryplugs">Binary Plugs</a> </li>
  58                             <li><a href="#importjdk">Optional Import JDK</a> </li>
  59                             <li><a href="#ant">Ant</a> </li>
  60                             <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
  61                             <li><a href="#compilers">Compilers</a> 
  62                                 <ul>
  63                                     <li><a href="#msvc">Microsoft Visual Studio</a> </li>
  64                                     <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
  65                                     <li><a href="#gcc">Linux gcc/binutils</a> </li>
  66                                     <li><a href="#studio">Sun Studio</a> </li>
  67                                 </ul>
  68                             </li>
  69                             <li><a href="#zip">Zip and Unzip</a> </li>
  70                             <li><a href="#freetype">FreeType2 Fonts</a> </li>
  71                             <li><a href="#jibx">JIBX Libraries</a> </li>
  72                             <li>Linux and Solaris:
  73                                 <ul>
  74                                     <li><a href="#cups">CUPS Include files</a> </li>
  75                                     <li><a href="#xrender">XRender Include files</a></li>
  76                                 </ul>
  77                             </li>
  78                             <li>Linux only:
  79                                 <ul>
  80                                     <li><a href="#alsa">ALSA files</a> </li>
  81                                 </ul>
  82                             </li>
  83                             <li>Windows only:
  84                                 <ul>
  85                                     <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
  86                                     <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
  87                                 </ul>
  88                             </li>
  89                         </ul>
  90                     </ul>
  91                 </li>
  92                 <li><a href="#creating">Creating the Build</a> </li>
  93                 <li><a href="#testing">Testing the Build</a> </li>
  94                 <li><a href="#variables">Environment/Make Variables</a></li>
  95                 <li><a href="#troubleshooting">Troubleshooting</a></li>
  96             </ul>
  97         </blockquote>
  98         <!-- ------------------------------------------------------ -->
  99         <hr>
 100         <h2><a name="MBE">Minimum Build Environments</a></h2>
 101         <blockquote>
 102             This file often describes specific requirements for what we call the
 103             "minimum build environments" (MBE) for this 
 104             specific release of the JDK,
 105             Building with the MBE will generate the most compatible
 106             bits that install on, and run correctly on, the most variations
 107             of the same base OS and hardware architecture.
 108             These usually represent what is often called the
 109             least common denominator platforms.
 110             It is understood that most developers will NOT be using these 
 111             specific platforms, and in fact creating these specific platforms
 112             may be difficult due to the age of some of this software.
 113             <p>
 114             The minimum OS and C/C++ compiler versions needed for building the
 115             OpenJDK:
 116             <p>
 117             <table border="1">
 118                 <thead>
 119                     <tr>
 120                         <th>Base OS and Architecture</th>
 121                         <th>OS</th>
 122                         <th>C/C++ Compiler</th>
 123                     </tr>
 124                 </thead>
 125                 <tbody>
 126                     <tr>
 127                         <td>Linux X86 (32-bit)</td>
 128                         <td>Fedora 9</td>
 129                         <td>gcc 4 </td>
 130                     </tr>
 131                     <tr>
 132                         <td>Linux X64 (64-bit)</td>
 133                         <td>Fedora 9</td>
 134                         <td>gcc 4 </td>
 135                     </tr>
 136                     <tr>
 137                         <td>Solaris SPARC (32-bit)</td>
 138                         <td>Solaris 10 + patches 
 139                             <br>
 140                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
 141                             SunSolve</a> for patch downloads.
 142                         </td>
 143                         <td>Sun Studio 12</td>
 144                     </tr>
 145                     <tr>
 146                         <td>Solaris SPARCV9 (64-bit)</td>
 147                         <td>Solaris 10 + patches
 148                             <br>
 149                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
 150                             SunSolve</a> for patch downloads.
 151                         </td>
 152                         <td>Sun Studio 12</td>
 153                     </tr>
 154                     <tr>
 155                         <td>Solaris X86 (32-bit)</td>
 156                         <td>Solaris 10 + patches
 157                             <br>
 158                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
 159                             SunSolve</a> for patch downloads.
 160                         </td>
 161                         <td>Sun Studio 12</td>
 162                     </tr>
 163                     <tr>
 164                         <td>Solaris X64 (64-bit)</td>
 165                         <td>Solaris 10 + patches
 166                             <br>
 167                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
 168                             SunSolve</a> for patch downloads.
 169                         </td>
 170                         <td>Sun Studio 12</td>
 171                     </tr>
 172                     <tr>
 173                         <td>Windows X86 (32-bit)</td>
 174                         <td>Windows XP</td>
 175                         <td>Microsoft Visual Studio C++ 2008 Standard Edition</td>
 176                     </tr>
 177                     <tr>
 178                         <td>Windows X64 (64-bit)</td>
 179                         <td>Windows Server 2003 - Enterprise x64 Edition</td>
 180                         <td>Microsoft Platform SDK - April 2005</td>
 181                     </tr>
 182                 </tbody>
 183             </table>
 184             <p>
 185             These same sources do indeed build on many more systems than the
 186             above older generation systems, again the above is just a minimum.
 187             <p>
 188             Compilation problems with newer or different C/C++ compilers is a
 189             common problem.
 190             Similarly, compilation problems related to changes to the
 191             <tt>/usr/include</tt> or system header files is also a
 192             common problem with newer or unreleased OS versions.
 193             Please report these types of problems as bugs so that they
 194             can be dealt with accordingly.
 195         </blockquote>
 196         <!-- ------------------------------------------------------ -->
 197         <hr>
 198         <h2><a name="SDBE">Specific Developer Build Environments</a></h2>
 199         <blockquote>
 200             We won't be listing all the possible environments, but
 201             we will try to provide what information we have available to us.
 202         </blockquote>
 203         <!-- ------------------------------------------------------ -->
 204         <h3><a name="fedora">Fedora 9</a></h3>
 205         <blockquote>
 206             After installing
 207             <a href="http://www.fedoraproject.org/">Fedora 9</a>
 208             you need to make sure you have
 209             the "Software Development" bundle installed, plus the
 210             following packages:
 211             <blockquote>
 212                 <ul>
 213                     <li>cups devel: Cups Development Package</li>
 214                     <li>freetype 2.3+ devel: Freetype 2.3 Development Package</li>
 215                     <li>hg: Mercurial, if you need to clone or manage source repositories</li>
 216                     <li>ksh: May be needed when using <tt>webrev</tt></li>
 217                 </ul>
 218             </blockquote>
 219             <p>
 220             Always a good idea to do a complete Software Update/Refresh
 221             after you get all the packages installed.
 222         </blockquote>
 223         <!-- ------------------------------------------------------ -->
 224         <h3><a name="centos">CentOS 5.2</a></h3>
 225         <blockquote>
 226             After installing
 227             <a href="http://www.centos.org/">CentOS 5.2</a>
 228             you need to make sure you have
 229             the following Development bundles installed:
 230             <blockquote>
 231                 <ul>
 232                     <li>Development Libraries</li>
 233                     <li>Development Tools</li>
 234                     <li>Java Development</li>
 235                     <li>X Software Development</li>
 236                 </ul>
 237             </blockquote>
 238             <p>
 239             Plus the following packages:
 240             <blockquote>
 241                 <ul>
 242                     <li>cups devel: Cups Development Package</li>
 243                     <li>alsa devel: Alsa Development Package</li>
 244                     <li>ant: Ant Package</li>
 245                     <li>Xi devel: libXi.so Development Package</li>
 246                 </ul>
 247             </blockquote>
 248             <p>
 249             The freetype 2.3 packages don't seem to be available,
 250             but the freetype 2.3 sources can be downloaded, built,
 251             and installed easily enough from
 252             <a href="http://downloads.sourceforge.net/freetype">
 253             the freetype site</a>.
 254             Build and install with something like:
 255             <blockquote>
 256                 <tt>./configure && make && sudo -u root make install</tt>
 257             </blockquote>
 258             <p>
 259             Mercurial packages could not be found easily, but a Google
 260             search should find ones, and they usually include Python if
 261             it's needed.
 262         </blockquote>
 263         <!-- ------------------------------------------------------ -->
 264         <h3><a name="ubuntu">Ubuntu</a></h3>
 265         <blockquote>
 266             In addition to needing the Bootstrap JDK and the Binary Plugs, 
 267             when building on Ubuntu you will need to
 268             make sure certain packages are installed.
 269             In particular, certain X11 packages, make, m4, gawk, gcc 4, 
 270             binutils, cups, freetype
 271             and alsa.
 272             <!-- ------------------------------------------------------ -->
 273             <h4>Ubuntu 6.06</h4>
 274             <p>
 275             The following list of packages for Ubuntu 6.06 is a working set that
 276             does appear to work. 
 277             <p>
 278             <b>Note that it's quite possible that some of these
 279                 packages are not required, so anyone discovering that some of the
 280                 packages listed below are NOT required,
 281                 please let the
 282                 OpenJDK
 283             team know.</b>
 284             <p>
 285             All the packages below can be installed with the
 286             Synaptic Package manager provided with the base Ubuntu 6.06 release.
 287             <blockquote>
 288                 <ul>
 289                     <li>binutils (2.16.1cvs20060117-1ubuntu2.1)</li>
 290                     <li>cpp (4:4.0.3-1)</li>
 291                     <li>cpp-4.0 (4.0.3-1ubuntu5)</li>
 292                     <li>libfreetype6-dev</li>
 293                     <li>g++ (4:4.0.3-1)</li>
 294                     <li>g++-4.0 (4.0.3-1ubuntu5)</li>
 295                     <li>gawk (1:3.1.5-2build1)</li>
 296                     <li>gcc (4:4.0.3-1)</li>
 297                     <li>gcc-4.0 (4.0.3-1ubuntu5)</li>
 298                     <li>libasound2-dev (1.0.10-2ubuntu4)</li>
 299                     <li>libc6 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
 300                     <li>libc6-dev (2.3.6-0ubuntu20.4)</li>
 301                     <li>libc6-i686 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
 302                     <li>libcupsys2-dev (1.2.2-0ubuntu0.6.06)</li>
 303                     <li>libgcrypt11-dev (1.2.2-1)</li>
 304                     <li>libgnutls-dev (1.2.9-2ubuntu1.1)</li>
 305                     <li>libgnutls12 (1.2.9-2ubuntu1) to 1.2.9-2ubuntu1.1</li>
 306                     <li>libgpg-error-dev (1.1-4)</li>
 307                     <li>libice-dev (2:1.0.0-0ubuntu2)</li>
 308                     <li>liblockfile1 (1.06.1)</li>
 309                     <li>libopencdk8-dev (0.5.7-2)</li>
 310                     <li>libpopt-dev (1.7-5)</li>
 311                     <li>libsm-dev (2:1.0.0-0ubuntu2)</li>
 312                     <li>libstdc++6-4.0-dev (4.0.3-1ubuntu5)</li>
 313                     <li>libtasn1-2-dev (0.2.17-1ubuntu1)</li>
 314                     <li>libx11-dev (2:1.0.0-0ubuntu9)</li>
 315                     <li>libxau-dev (1:1.0.0-0ubuntu4)</li>
 316                     <li>libxaw-headers (2:1.0.1-0ubuntu3)</li>
 317                     <li>libxaw7-dev (2:1.0.1-0ubuntu3)</li>
 318                     <li>libxdmcp-dev (1:1.0.0-0ubuntu2)</li>
 319                     <li>libxext-dev (2:1.0.0-0ubuntu4)</li>
 320                     <li>libxi-dev (2:1.0.0-0ubuntu3) </li>
 321                     <li>libxmu-dev (2:1.0.0-0ubuntu3)</li>
 322                     <li>libxmu-headers (2:1.0.0-0ubuntu3)</li>
 323                     <li>libxmuu-dev (2:1.0.0-0ubuntu3)</li>
 324                     <li>libxp-dev (6.8.2-11ubuntu2)</li>
 325                     <li>libxpm-dev (1:3.5.4.2-0ubuntu3)</li>
 326                     <li>libxrandr-dev (1:1.1.0.2-0ubuntu4)</li>
 327                     <li>libxt-dev (1:1.0.0-0ubuntu3)</li>
 328                     <li>libxtrap-dev (2:1.0.0-0ubuntu2)</li>
 329                     <li>libxtst-dev (2:1.0.1-0ubuntu2)</li>
 330                     <li>libxv-dev (2:1.0.1-0ubuntu3)</li>
 331                     <li>linux-kernel-headers (2.6.11.2-0ubuntu18)</li>
 332                     <li>m4 (1.4.4-1)</li>
 333                     <li>make (3.80+3.81.b4-1)</li>
 334                     <li>ssl-cert (1.0.13)</li>
 335                     <li>x-dev (7.0.4-0ubuntu2)</li>
 336                     <li>x11proto-core-dev (7.0.4-0ubuntu2)</li>
 337                     <li>x11proto-input-dev (1.3.2-0ubuntu2)</li>
 338                     <li>x11proto-kb-dev (1.0.2-0ubuntu2)</li>
 339                     <li>x11proto-randr-dev (1.1.2-0ubuntu2)</li>
 340                     <li>x11proto-record-dev (1.13.2-0ubuntu2)</li>
 341                     <li>x11proto-trap-dev (3.4.3-0ubuntu2)</li>
 342                     <li>x11proto-video-dev (2.2.2-0ubuntu2)</li>
 343                     <li>x11proto-xext-dev (7.0.2-0ubuntu2)</li>
 344                     <li>xlibs-dev (7.0.0-0ubuntu45)</li>
 345                     <li>zlib1g-dev (1:1.2.3-6ubuntu4)</li>
 346                 </ul>
 347             </blockquote>
 348             <!-- ------------------------------------------------------ -->
 349             <h4>Ubuntu 7.04</h4>
 350             <p>
 351             Using the Synaptic Package Manager, download the following
 352             packages (double indented packages are automatically aquired
 353             due to package dependencies):
 354             <blockquote>
 355                 <ul>
 356                     <li>build-essential</li>
 357                     <ul>
 358                         <li>dpkg-dev</li>
 359                         <li>g++</li>
 360                         <li>g++-4.1</li>
 361                         <li>libc6-dev</li>
 362                         <li>libstdc++6.4.1-dev</li>
 363                         <li>linux-libc-dev</li>
 364                     </ul>
 365                     <li>gawk</li>
 366                     <li>m4</li>
 367                     <li>libasound2-dev</li>
 368                     <li>libcupsys2-dev</li>
 369                     <ul>
 370                         <li>libgcrypt11-dev</li>
 371                         <li>lgnutls-dev</li>
 372                         <li>libgpg-error-dev</li>
 373                         <li>liblzo-dev</li>
 374                         <li>libopencdk8-dev</li>
 375                         <li>libpopt-dev</li>
 376                         <li>libtasn1-3-dev</li>
 377                         <li>zlib1g-dev</li>
 378                     </ul>
 379                     <li>sun-java6-jdk</li>
 380                     <ul>
 381                         <li>java-common</li>
 382                         <li>libltdl3</li>
 383                         <li>odbcinst1debian1</li>
 384                         <li>sun-java6-bin</li>
 385                         <li>sun-java6-jre</li>
 386                         <li>unixodbc</li>
 387                     </ul>
 388                     <li>xlibs-dev</li>
 389                     <ul>
 390                         <li>(many)</li>
 391                     </ul>
 392                     <li>x11proto-print-dev</li>
 393                     <li>libxaw7-dev</li>
 394                     <ul>
 395                         <li>libxaw-headers</li>
 396                     </ul>
 397                     <li>libxp-dev</li>
 398                     <li>libfreetype6-dev</li>
 399                 </ul>
 400             </blockquote>
 401         </blockquote>
 402         <!-- ------------------------------------------------------ -->
 403         <hr>
 404         <h2><a name="directories">Source Directory Structure</a></h2>
 405         <blockquote>
 406             <p>
 407             The source code for the OpenJDK is delivered in a set of
 408             directories:
 409             <tt>hotspot</tt>, 
 410             <tt>langtools</tt>, 
 411             <tt>corba</tt>, 
 412             <tt>jaxws</tt>, 
 413             <tt>jaxp</tt>, 
 414             and
 415             <tt>jdk</tt>.
 416             The <tt>hotspot</tt> directory contains the source code and make
 417             files for building the OpenJDK Hotspot Virtual Machine. 
 418             The <tt>langtools</tt> directory contains the source code and make
 419             files for building the OpenJDK javac and language tools.
 420             The <tt>corba</tt> directory contains the source code and make
 421             files for building the OpenJDK Corba files.
 422             The <tt>jaxws</tt> directory contains the source code and make
 423             files for building the OpenJDK JAXWS files.
 424             The <tt>jaxp</tt> directory contains the source code and make
 425             files for building the OpenJDK JAXP files.
 426             The <tt>jdk</tt> directory contains the source code and make files for
 427             building the OpenJDK runtime libraries and misc files.
 428             The top level <tt>Makefile</tt>
 429             is used to build the entire OpenJDK.
 430         </blockquote>
 431         <!-- ------------------------------------------------------ -->
 432         <hr>
 433         <h2><a name="building">Build Information</a></h2>
 434         <blockquote>
 435             Building the OpenJDK
 436             is done with a <tt><i>gmake</i></tt>
 437             command line and various
 438             environment or make variable settings that direct the make rules
 439             to where various components have been installed.
 440             Where possible the makefiles will attempt to located the various
 441             components in the default locations or any component specific 
 442             variable settings.
 443             When the normal defaults fail or components cannot be found,
 444             the various
 445             <tt>ALT_*</tt> variables (alternates)
 446             can be used to help the makefiles locate components.
 447             <p>
 448             Refer to the bash/sh/ksh setup file
 449             <tt>jdk/make/jdk_generic_profile.sh</tt>
 450             if you need help in setting up your environment variables.
 451             A build could be as simple as:
 452             <blockquote>
 453                 <pre><tt>
 454                 bash
 455                 . jdk/make/jdk_generic_profile.sh
 456                 <i>gmake</i> sanity &amp;&amp; <i>gmake</i>
 457                 </tt></pre>
 458             </blockquote>
 459             <p>
 460             Of course ksh or sh would work too.
 461             But some customization will probably be necessary.
 462             The <tt>sanity</tt> rule will make some basic checks on build
 463             dependencies and generate appropriate warning messages
 464             regarding missing, out of date, or newer than expected components
 465             found on your system.
 466         </blockquote>
 467         <!-- ------------------------------------------------------ -->
 468         <hr>
 469         <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
 470         <blockquote>
 471             The Makefiles in the OpenJDK are only valid when used with the 
 472             GNU version of the utility command <tt>make</tt>
 473             (<tt><i>gmake</i></tt>).
 474             A few notes about using GNU make:
 475             <ul>
 476                 <li>
 477                     In general, you need GNU make version 3.78.1 or newer.
 478                 </li>
 479                 <li>
 480                     Place the location of the GNU make binary in the <tt>PATH</tt>. 
 481                 </li>
 482                 <li>
 483                     <strong>Linux:</strong>
 484                     The <tt>/usr/bin/make</tt> command should work fine for you.
 485                 </li>
 486                 <li>
 487                     <strong>Solaris:</strong>
 488                     Do NOT use <tt>/usr/bin/make</tt> on Solaris.
 489                     If your Solaris system has the software
 490                     from the Solaris Companion CD installed, 
 491                     you should use <tt>gmake</tt>
 492                     which will be located in either the <tt>/opt/sfw/bin</tt> or 
 493                     <tt>/usr/sfw/bin</tt> directory.
 494                     In more recent versions of Solaris GNU make can be found
 495                     at <tt>/usr/bin/gmake</tt>. 
 496                 </li>
 497                 <li>
 498                     <strong>Windows:</strong>
 499                     Make sure you start your build inside a bash/sh/ksh shell.
 500                     <br>
 501                     <b>WARNING:</b> Watch out for make version 3.81, it may
 502                     not work due to a lack of support for MS-DOS drive letter paths
 503                     like <tt>C:/</tt> or <tt>C:\</tt>.
 504                     Use a 3.80 version, or find a newer
 505                     version that has this problem fixed.
 506                     The older 3.80 version of make.exe can be downloaded with this
 507                     <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
 508                     link</a>.
 509                     Use of this older 3.80 make.exe may require that you install the
 510                     libintl2.dll library or libintl2 cygwin package which is
 511                     no longer installed by default by the cygwin installer.
 512                     <br>
 513                     Also see the
 514                     <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
 515                     mozilla developer center</a>
 516                     on this topic.
 517                     <br>
 518                     It's hoped that when make 3.82 starts shipping in a future cygwin
 519                     release that this MS-DOS path issue will be fixed.
 520                     In addition to the above 3.80 make.exe you can download 
 521                     this
 522                     <a href="http://www.cmake.org/files/cygwin/make.exe">
 523                     www.cmake.org make.exe</a> which will not have a libintl2.dll
 524                     dependency.
 525                 </li>
 526             </ul>
 527             <p>
 528             Information on GNU make, and access to ftp download sites, are
 529             available on the
 530             <a href="http://www.gnu.org/software/make/make.html" target="_blank">
 531                 GNU make web site
 532             </a>.
 533             The latest source to GNU make is available at
 534             <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
 535             ftp.gnu.org/pub/gnu/make/</a>.
 536         </blockquote>
 537         <!-- ------------------------------------------------------ -->
 538         <hr>
 539         <h3><a name="linux">Basic Linux System Setup</a></h3>
 540         <blockquote>
 541             <strong>i586 only:</strong>
 542             The minimum recommended hardware for building the Linux version
 543             is a Pentium class processor or better, at least 256 MB of RAM, and
 544             approximately 1.5 GB of free disk space.
 545             <p> 
 546             <strong>X64 only:</strong>
 547             The minimum recommended hardware for building the Linux
 548             version is an AMD Opteron class processor, at least 512 MB of RAM, and
 549             approximately 4 GB of free disk space.
 550             <p> 
 551             The build will use the tools contained in 
 552             <tt>/bin</tt> and 
 553             <tt>/usr/bin</tt>
 554             of a standard installation of the Linux operating environment. 
 555             You should ensure that these directories are in your 
 556             <tt>PATH</tt>.
 557             <p>
 558             Note that some Linux systems have a habit of pre-populating
 559             your environment variables for you, for example <tt>JAVA_HOME</tt>
 560             might get pre-defined for you to refer to the JDK installed on
 561             your Linux system. 
 562             You will need to unset <tt>JAVA_HOME</tt>.
 563             It's a good idea to run <tt>env</tt> and verify the
 564             environment variables you are getting from the default system
 565             settings make sense for building the 
 566             OpenJDK.
 567         </blockquote>
 568         <!-- ------------------------------------------------------ -->
 569         <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
 570         <blockquote>
 571             <ol>
 572                 <li>
 573                     Install the
 574                     <a href="#bootjdk">Bootstrap JDK</a>, set
 575                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
 576                 </li>
 577                 <li>
 578                     Install the
 579                     <a href="#binaryplugs">Binary Plugs</a>, set
 580                     <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
 581                 </li>
 582                 <li>
 583                     <a href="#importjdk">Optional Import JDK</a>, set
 584                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
 585                 </li>
 586                 <li>
 587                     Install or upgrade the <a href="#freetype">FreeType development
 588                     package</a>.
 589                 </li>
 590                 <li>
 591                     Install the
 592                     <a href="#jibx">JIBX Libraries</a>, set
 593                     <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
 594                 </li>
 595                 <li>
 596                     Install
 597                     <a href="#ant">Ant</a>, 
 598                     make sure it is in your PATH.
 599                 </li>
 600             </ol>
 601         </blockquote>
 602         <!-- ------------------------------------------------------ -->
 603         <hr>
 604         <h3><a name="solaris">Basic Solaris System Setup</a></h3>
 605         <blockquote>
 606             The minimum recommended hardware for building the
 607             Solaris SPARC version is an UltraSPARC with 512 MB of RAM. 
 608             For building
 609             the Solaris x86 version, a Pentium class processor or better and at
 610             least 512 MB of RAM are recommended. 
 611             Approximately 1.4 GB of free disk
 612             space is needed for a 32-bit build.
 613             <p>
 614             If you are building the 64-bit version, you should
 615             run the command "isainfo -v" to verify that you have a
 616             64-bit installation, it should say <tt>sparcv9</tt> or
 617             <tt>amd64</tt>.
 618             An additional 7 GB of free disk space is needed
 619             for a 64-bit build.
 620             <p> 
 621             The build uses the tools contained in <tt>/usr/ccs/bin</tt>
 622             and <tt>/usr/bin</tt> of a standard developer or full installation of
 623             the Solaris operating environment.
 624             <p> 
 625             Solaris patches specific to the JDK can be downloaded from the 
 626             <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
 627             SunSolve JDK Solaris patches download page</a>.
 628             You should ensure that the latest patch cluster for
 629             your version of the Solaris operating environment has also
 630             been installed.
 631         </blockquote>
 632         <!-- ------------------------------------------------------ -->
 633         <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
 634         <blockquote>
 635             <ol>
 636                 <li>
 637                     Install the
 638                     <a href="#bootjdk">Bootstrap JDK</a>, set
 639                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
 640                 </li>
 641                 <li>
 642                     Install the
 643                     <a href="#binaryplugs">Binary Plugs</a>, set
 644                     <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
 645                 </li>
 646                 <li>
 647                     <a href="#importjdk">Optional Import JDK</a>, set
 648                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
 649                 </li>
 650                 <li>
 651                     Install the
 652                     <a href="#studio">Sun Studio Compilers</a>, set
 653                     <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
 654                 </li>
 655                 <li>
 656                     Install the
 657                     <a href="#cups">CUPS Include files</a>, set
 658                     <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
 659                 </li>
 660                 <li>
 661                     Install the <a href="#xrender">XRender Include files</a></tt>.
 662                 </li>
 663                 <li>
 664                     Install the
 665                     <a href="#jibx">JIBX Libraries</a>, set
 666                     <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
 667                 </li>
 668                 <li>
 669                     Install
 670                     <a href="#ant">Ant</a>, 
 671                     make sure it is in your PATH.
 672                 </li>
 673             </ol>
 674         </blockquote>
 675         <!-- ------------------------------------------------------ -->
 676         <hr>
 677         <h3><a name="windows">Basic Windows System Setup</a></h3>
 678         <blockquote> 
 679             <strong>i586 only:</strong>
 680             The minimum recommended hardware for building the 32-bit or X86
 681             Windows version is an Pentium class processor or better, at least
 682             512 MB of RAM, and approximately 600 MB of free disk space.
 683             <strong>
 684                 NOTE: The Windows build machines need to use the
 685                 file system NTFS. 
 686                 Build machines formatted to FAT32 will not work 
 687                 because FAT32 doesn't support case-sensitivity in file names.
 688             </strong>
 689             <p> 
 690             <strong>X64 only:</strong>
 691             The minimum recommended hardware for building
 692             the Windows X64 version is an AMD Opteron class processor, at least 1
 693             GB of RAM, and approximately 10 GB of free disk space.
 694         </blockquote>
 695         <!-- ------------------------------------------------------ -->
 696         <h4><a name="paths">Windows Paths</a></h4>
 697         <blockquote>
 698             <strong>Windows:</strong>
 699             Note that GNU make is a historic utility and is based very
 700             heavily on shell scripting, so it does not tolerate the Windows habit
 701             of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
 702             Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
 703             there is always a 'short' pathname without spaces for any path that 
 704             contains spaces.
 705             Unfortunately, this short pathname can be somewhat dynamic and the
 706             formula is difficult to explain.
 707             You can use <tt>cygpath</tt> utility to map pathnames with spaces
 708             or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
 709             (called 'mixed'), e.g.
 710             <tt>cygpath -s -m "<i>path</i>"</tt>.
 711             <p>
 712             The makefiles will try to translate any pathnames supplied
 713             to it into the <tt>C:/</tt> style automatically.
 714             <p>
 715             Note that use of CYGWIN creates a unique problem with regards to
 716             setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
 717             the <tt>PATH</tt> variable contains directories
 718             separated with the ";" character (Solaris and Linux uses ":").
 719             With CYGWIN, it uses ":", but that means that paths like "C:/path"
 720             cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
 721             instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
 722             which CYGWIN understands, but only CYGWIN understands.
 723             So be careful with paths on Windows.
 724         </blockquote>
 725         <!-- ------------------------------------------------------ -->
 726         <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
 727         <blockquote>
 728             <ol>
 729                 <li>
 730                     Install the
 731                     <a href="#cygwin">CYGWIN product</a>. 
 732                 </li>
 733                 <li>
 734                     Install the 
 735                     <a href="#bootjdk">Bootstrap JDK</a>, set
 736                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
 737                 </li>
 738                 <li>
 739                     Install the
 740                     <a href="#binaryplugs">Binary Plugs</a>, set
 741                     <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
 742                 </li>
 743                 <li>
 744                     <a href="#importjdk">Optional Import JDK</a>, set
 745                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
 746                 </li>
 747                 <li>
 748                     Install the
 749                     <a href="#msvc">Microsoft Visual Studio Compilers</a> (32-bit).
 750                 </li>
 751                 <li>
 752                     Install the
 753                     <a href="#mssdk">Microsoft Platform SDK</a>.
 754                 </li>
 755                 <li>
 756                     Setup all environment variables for compilers 
 757                     (see <a href="#msvc">compilers</a>).
 758                 </li>
 759                 <li>
 760                     Install 
 761                     <a href="#dxsdk">Microsoft DirectX SDK</a>.
 762                 </li>
 763                 <li>
 764                     Install the
 765                     <a href="#jibx">JIBX Libraries</a>, set
 766                     <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
 767                 </li>
 768                 <li>
 769                     Install
 770                     <a href="#ant">Ant</a>, 
 771                     make sure it is in your PATH and set
 772                     <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
 773                 </li>
 774             </ol>
 775         </blockquote>
 776         <!-- ------------------------------------------------------ -->
 777         <hr>
 778         <h3><a name="dependencies">Build Dependencies</a></h3>
 779         <blockquote>
 780             Depending on the platform, the OpenJDK build process has some basic
 781             dependencies on components not part of the OpenJDK sources.
 782             Some of these are specific to a platform, some even specific to
 783             an architecture.
 784             Each dependency will have a set of ALT variables that can be set
 785             to tell the makefiles where to locate the component.
 786             In most cases setting these ALT variables may not be necessary
 787             and the makefiles will find defaults on the system in standard
 788             install locations or through component specific variables.
 789             <!-- ------------------------------------------------------ -->
 790             <h4><a name="bootjdk">Bootstrap JDK</a></h4>
 791             <blockquote>
 792                 All OpenJDK builds require access to the previously released 
 793                 JDK 6, this is often called a bootstrap JDK.
 794                 The JDK 6 binaries can be downloaded from Sun's 
 795                 <a href="http://java.sun.com/javase/1.6.0/download.html" target="_blank">JDK 6 download site</a>.
 796                 For build performance reasons
 797                 is very important that this bootstrap JDK be made available on the
 798                 local disk of the machine doing the build.
 799                 You should always set 
 800                 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
 801                 to point to the location of
 802                 the bootstrap JDK installation, this is the directory pathname
 803                 that contains a <tt>bin, lib, and include</tt>
 804                 It's also a good idea to also place its <tt>bin</tt> directory
 805                 in the <tt>PATH</tt> environment variable, although it's
 806                 not required.
 807                 <p>
 808                 <strong>Solaris:</strong>
 809                 Some pre-installed JDK images may be available to you in the
 810                 directory <tt>/usr/jdk/instances</tt>.
 811                 If you don't set
 812                 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
 813                 the makefiles will look in that location for a JDK it can use.
 814             </blockquote>
 815             <!-- ------------------------------------------------------ -->
 816             <h4><a name="binaryplugs">Binary Plugs</a></h4>
 817             <blockquote>
 818                 Not all of the source code that makes up the JDK is available
 819                 under an open-source license.
 820                 This is a temporary situation and these binary plugs will be
 821                 replaced with fully open source replacements as soon as possible.
 822                 So currently, in order to build a complete OpenJDK image,
 823                 you must first download and install the appropriate
 824                 binary plug bundles for the OpenJDK, go to the
 825                 <a href="http://openjdk.java.net" target="_blank">OpenJDK</a> site and select
 826                 the 
 827                 "<b>Bundles(7)</b>"
 828                 link and download the binaryplugs for
 829                 your particular platform.
 830                 The file downloaded is a jar file that must be extracted by running
 831                 the jar file with:
 832                 <blockquote>
 833                     <pre>
 834             <tt><b>java -jar jdk-7-ea-plug-b<i>nn</i>-<i>os</i>-<i>arch</i>-<i>dd</i>_<i>month</i>_<i>year</i>.jar</b></tt>
 835                     </pre>
 836                 </blockquote>
 837                 A prompt will be issued for acceptance of these binary plug files.
 838                 During the OpenJDK build process these "binary plugs"
 839                 for the encumbered components will be copied into your
 840                 resulting OpenJDK binary build image.
 841                 These binary plug files are only for the purpose of
 842                 building an OpenJDK binary.
 843                 Make sure you set
 844                 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
 845                 to the root of this installation.
 846             </blockquote>
 847             <!-- ------------------------------------------------------ -->
 848             <h4><a name="importjdk">Optional Import JDK</a></h4>
 849             <blockquote>
 850                 The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
 851                 setting is only needed if you are not building the entire
 852                 JDK. For example, if you have built the entire JDK once, and
 853                 wanted to avoid repeatedly building the Hotspot VM, you could
 854                 set this to the location of the previous JDK install image
 855                 and the build will copy the needed files from this import area.
 856             </blockquote>
 857             <!-- ------------------------------------------------------ -->
 858             <h4><a name="ant">Ant</a></h4>
 859             <blockquote>
 860                 All OpenJDK builds require access to least Ant 1.6.5.
 861                 The Ant tool is available from the 
 862                 <a href="http://ant.apache.org" target="_blank">
 863                 Ant download site</a>.
 864                 You should always make sure <tt>ant</tt> is in your PATH, and
 865                 on Windows you may also need to set 
 866                 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
 867                 to point to the location of
 868                 the Ant installation, this is the directory pathname
 869                 that contains a <tt>bin and lib</tt>.
 870             </blockquote>
 871             <!-- ------------------------------------------------------ -->
 872             <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
 873             <blockquote>
 874                 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
 875                 http://en.wikipedia.org/wiki/Certificate_Authority</a>
 876                 for a better understanding of the Certificate Authority (CA).
 877                 A certificates file named "cacerts"
 878                 represents a system-wide keystore with CA certificates. 
 879                 In JDK and JRE
 880                 binary bundles, the "cacerts" file contains root CA certificates from
 881                 several public CAs (e.g., VeriSign, Thawte, and Baltimore).
 882                 The source contain a cacerts file
 883                 without CA root certificates. 
 884                 Formal JDK builders will need to secure
 885                 permission from each public CA and include the certificates into their
 886                 own custom cacerts file. 
 887                 Failure to provide a populated cacerts file
 888                 will result in verification errors of a certificate chain during runtime.
 889                 The variable 
 890                 <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
 891                 can be used to override the default location of the
 892                 cacerts file that will get placed in your build.
 893                 By default an empty cacerts file is provided and that should be
 894                 fine for most JDK developers.
 895             </blockquote>
 896             <!-- ------------------------------------------------------ -->
 897             <h4><a name="jibx">JIBX</a></h4>
 898             <blockquote>
 899                 JIBX libraries version 1.1.5 is required for building the OpenJDK.
 900                 Namely, the following JAR files from the JIBX distribution package
 901                 are required:
 902                 <ul>
 903                     <li>bcel.jar
 904                     <li>jibx-bind.jar
 905                     <li>jibx-run.jar
 906                     <li>xpp3.jar
 907                 </ul>
 908                 <p>
 909                 You can download the package from the
 910                 <a href="http://jibx.sourceforge.net" target="_blank">JIBX site</a>.
 911                 <p>
 912                 You will need to set the
 913                 <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>
 914                 environment variable to refer to place where the JAR files,
 915                 above, are located.
 916             </blockquote>
 917             <!-- ------------------------------------------------------ -->
 918             <h4><a name="compilers">Compilers</a></h4>
 919             <blockquote>
 920                 <strong><a name="gcc">Linux gcc/binutils</a></strong>
 921                 <blockquote>
 922                     The GNU gcc compiler version should be 4 or newer.
 923                     The compiler used should be the default compiler installed
 924                     in <tt>/usr/bin</tt>.
 925                 </blockquote>
 926                 <strong><a name="studio">Solaris: Sun Studio</a></strong>
 927                 <blockquote>
 928                     At a minimum, the
 929                     <a href="http://developers.sun.com/sunstudio/index.jsp" target="_blank">
 930                     Sun Studio 12 Compilers</a>
 931                     (containing version 5.9 of the C and C++ compilers) is required,
 932                     with patches from the
 933                     <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access" target="_blank">
 934                     SunSolve web site</a>.
 935                     <p> 
 936                     Set 
 937                     <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
 938                     to point to the location of
 939                     the compiler binaries, and place this location in the <tt>PATH</tt>.
 940                     <p>
 941                     The Sun Studio Express compilers at:
 942                     <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
 943                     Sun Studio Express Download site</a>
 944                     are also an option, although these compilers have not
 945                     been extensively used yet.
 946                 </blockquote>
 947                 <strong><a name="msvc">Windows i586: Microsoft Visual Studio Compilers</a></strong>
 948                 <blockquote>
 949                     The 32-bit OpenJDK Windows build
 950                     requires 
 951                     Microsoft Visual Studio C++ 2008 (VS2008) Standard
 952                     Edition compiler. 
 953                     The compiler and other tools are expected to reside
 954                     in the location defined by the variable 
 955                     <tt>VS90COMNTOOLS</tt> which
 956                     is set by the Microsoft Visual Studio installer.
 957                     <p> 
 958                     Once the compiler is installed, 
 959                     it is recommended that you run <tt>VCVARS32.BAT</tt> 
 960                     to set the compiler environment variables
 961                     <tt>INCLUDE</tt>,
 962                     <tt>LIB</tt>, and
 963                     <tt>PATH</tt> 
 964                     prior to building the 
 965                     OpenJDK.
 966                     The above environment variables <b>MUST</b> be set.
 967                     <p>
 968                     <b>WARNING:</b> Make sure you check out the
 969                     <a href="#cygwin">CYGWIN link.exe WARNING</a>.
 970                     The path <tt>/usr/bin</tt> must be after the path to the
 971                     Visual Studio product.
 972                 </blockquote>
 973                 <strong><a name="mssdk">Windows: Microsoft Platform SDK</a></strong>
 974                 <blockquote>
 975                     On <b>X64</b>, the Microsoft Platform Software
 976                     Development Kit (SDK), April 2005 Edition compiler,
 977                     is required for building the OpenJDK
 978                     because it contains the C/C++ compiler. 
 979                     You will need to minimally install the Core SDK and
 980                     the MDAC SDK features of this compiler.
 981                     <p>
 982                     Once the Platform SDK is installed,
 983                     it is recommended that you run <tt>SetEnv.Cmd /X64</tt> 
 984                     to set the compiler environment variables
 985                     <tt>MSSDK</tt>, 
 986                     <tt>MSTOOLS</tt>,
 987                     <tt>INCLUDE</tt>,
 988                     <tt>LIB</tt>, and
 989                     <tt>PATH</tt> 
 990                     prior to building the 
 991                     OpenJDK.
 992                     The above environment variables <b>MUST</b> be set.
 993                     <p>
 994                     This Platform SDK compiler is only used on X64 builds
 995                     but other parts of the Platform SDK may be used 
 996                     for the X86 builds.
 997                 </blockquote>
 998             </blockquote>
 999             <!-- ------------------------------------------------------ --> 
1000             <h4><a name="zip">Zip and Unzip</a></h4>
1001             <blockquote>
1002                 Version 2.2 (November 3rd 1997) or newer of the zip utility 
1003                 and version 5.12 or newer of the unzip utility is needed 
1004                 to build the JDK.
1005                 With Solaris, Linux, and Windows CYGWIN, the zip and unzip
1006                 utilities installed on the system should be fine.
1007                 Information and the source code for
1008                 ZIP.EXE and UNZIP.EXE is available on the
1009                 <a href="http://www.info-zip.org" 
1010                    target="_blank">info-zip web site</a>.
1011             </blockquote>
1012             <!-- ------------------------------------------------------ -->
1013             <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris &amp; Linux)</a></h4>
1014             <blockquote>
1015                 <strong>Solaris:</strong>
1016                 CUPS header files are required for building the 
1017                 OpenJDK on Solaris.
1018                 The Solaris header files can be obtained by installing 
1019                 the package <strong>SFWcups</strong> from the Solaris Software
1020                 Companion CD/DVD, these often will be installed into 
1021                 <tt>/opt/sfw/cups</tt>.
1022                 <p>
1023                 <strong>Linux:</strong>
1024                 CUPS header files are required for building the 
1025                 OpenJDK on Linux.
1026                 The Linux header files are usually available from a "cups"
1027                 development package, it's recommended that you try and use
1028                 the package provided by the particular version of Linux that
1029                 you are using.
1030                 <p>
1031                 The CUPS header files can always be downloaded from 
1032                 <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1033                 The variable 
1034                 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1035                 can be used to override the default location of the
1036                 CUPS Header files.
1037             </blockquote>
1038             <!-- ------------------------------------------------------ -->
1039             <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
1040             <blockquote>
1041                 <p>
1042                 <strong>Solaris:</strong>
1043                 XRender header files are required for building the 
1044                 OpenJDK on Solaris.
1045                 The XRender header file is included with the other X11 header files
1046                 in the package <strong>SFWxwinc</strong> on new enough versions of
1047                 Solaris and will be installed in
1048                 <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
1049                 </p><p>
1050                 <strong>Linux:</strong>
1051                 XRender header files are required for building the 
1052                 OpenJDK on Linux.
1053                 The Linux header files are usually available from a "Xrender"
1054                 development package, it's recommended that you try and use
1055                 the package provided by the particular distribution of Linux that
1056                 you are using.
1057                 </p>
1058             </blockquote>
1059             <!-- ------------------------------------------------------ -->
1060             <h4><a name="freetype">FreeType 2</a></h4>
1061             <blockquote>
1062                 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1063                 On Unix systems required files can be available as part of your
1064                 distribution (while you still may need to upgrade them).
1065                 Note that you need development version of package that 
1066                 includes both FreeType library and header files.
1067                 <p>
1068                 You can always download latest FreeType version from the
1069                 <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
1070                 <p>
1071                 Makefiles will try to pick FreeType from /usr/lib and /usr/include.
1072                 In case it is installed elsewhere you will need to set environment
1073                 variables 
1074                 <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
1075                 and 
1076                 <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
1077                 to refer to place where library and header files are installed.
1078                 <p>
1079                 Building the freetype 2 libraries from scratch is also possible,
1080                 however on Windows refer to the
1081                 <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
1082                 Windows FreeType DLL build instructions</a>.
1083                 <p>
1084                 Note that by default FreeType is built with byte code hinting
1085                 support disabled due to licensing restrictions.
1086                 In this case, text appearance and metrics are expected to
1087                 differ from Sun's official JDK build.
1088                 See
1089                 <a href="http://freetype.sourceforge.net/freetype2/index.html">
1090                     the SourceForge FreeType2 Home Page
1091                 </a>
1092                 for more information.
1093             </blockquote>    
1094             <!-- ------------------------------------------------------ -->
1095             <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
1096             <blockquote>
1097                 <strong>Linux only:</strong>
1098                 Version 0.9.1 or newer of the ALSA files are
1099                 required for building the OpenJDK on Linux.
1100                 These Linux files are usually available from an "alsa"
1101                 of "libasound"
1102                 development package, it's highly recommended that you try and use
1103                 the package provided by the particular version of Linux that
1104                 you are using.
1105                 The makefiles will check this emit a sanity error if it is
1106                 missing or the wrong version.
1107                 <p>
1108                 In particular, older Linux systems will likely not have the
1109                 right version of ALSA installed, for example
1110                 Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently 
1111                 recent ALSA distribution.
1112                 On rpm-based systems, you can see if ALSA is installed by 
1113                 running this command:
1114                 <pre>
1115                     <tt>rpm -qa | grep alsa</tt>
1116                 </pre>
1117                 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
1118                 <p> 
1119                 If your distribution does not come with ALSA, and you can't
1120                 find ALSA packages built for your particular system,
1121                 you can try to install the pre-built ALSA rpm packages from
1122                 <a href="http://www.freshrpms.net/" target="_blank">
1123                 <tt>www.freshrpms.net</tt></a>. 
1124                 Note that installing a newer ALSA could
1125                 break sound output if an older version of ALSA was previously
1126                 installed on the system, but it will enable JDK compilation.
1127                 <blockquote>
1128                     Installation: execute as root<br>
1129                     [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
1130                     [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
1131                     Uninstallation:<br>
1132                     [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
1133                     [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
1134                     Make sure that you do not link to the static library
1135                     (<tt>libasound.a</tt>),
1136                     by verifying that the dynamic library (<tt>libasound.so</tt>) is
1137                     correctly installed in <tt>/usr/lib</tt>.
1138                 </blockquote>
1139                 As a last resort you can go to the
1140                 <a href="http://www.alsa-project.org" target="_blank">
1141                 Advanced Linux Sound Architecture Site</a> and build it from
1142                 source.
1143                 <blockquote>
1144                     Download driver and library
1145                     source tarballs from 
1146                     <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>. 
1147                     As root, execute the following
1148                     commands (you may need to adapt the version number):
1149                     <pre>
1150                         <tt>
1151                             $ tar xjf alsa-driver-0.9.1.tar.bz2
1152                             $ cd alsa-driver-0.9.1
1153                             $ ./configure
1154                             $ make install
1155                             $ cd ..
1156                             $ tar xjf alsa-lib-0.9.1.tar.bz2
1157                             $ cd alsa-lib-0.9.1
1158                             $ ./configure
1159                             $ make install
1160                         </tt>
1161                     </pre>
1162                     Should one of the above steps fail, refer to the documentation on
1163                     ALSA's home page.
1164                 </blockquote>
1165                 Note that this is a minimum install that enables
1166                 building the JDK platform. To actually use ALSA sound drivers, more
1167                 steps are necessary as outlined in the documentation on ALSA's homepage.
1168                 <p>
1169                 ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
1170                 the <tt>alsa-lib-0.9.1</tt> directory and then in 
1171                 <tt>alsa-driver-0.9.1</tt>.
1172             </blockquote>
1173             There are no ALT* variables to change the assumed locations of ALSA,
1174             the makefiles will expect to find the ALSA include files and library at:
1175             <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
1176         </blockquote>
1177         <!-- ------------------------------------------------------ -->
1178         <h4>Windows Specific Dependencies</h4>
1179         <blockquote>
1180             <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
1181             <blockquote> 
1182                 The OpenJDK requires access to a set of unix command tools
1183                 on Windows which can be supplied by 
1184                 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 
1185                 <p>
1186                 The OpenJDK build requires CYGWIN version 1.5.12 or newer. 
1187                 Information about CYGWIN can
1188                 be obtained from the CYGWIN website at 
1189                 <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 
1190                 <p>
1191                 By default CYGWIN doesn't install all the tools required for building
1192                 the OpenJDK.
1193                 Along with the default installation, you need to install
1194                 the following tools.
1195                 <blockquote>
1196                     <table border="1">
1197                         <thead>
1198                             <tr>
1199                                 <td>Binary Name</td>
1200                                 <td>Category</td>
1201                                 <td>Package</td>
1202                                 <td>Description</td>
1203                             </tr>
1204                         </thead>
1205                         <tbody>
1206                             <tr>
1207                                 <td>ar.exe</td>
1208                                 <td>Devel</td>
1209                                 <td>binutils</td>
1210                                 <td>The GNU assembler, linker and binary
1211                                 utilities</td>
1212                             </tr>
1213                             <tr>
1214                                 <td>make.exe</td>
1215                                 <td>Devel</td>
1216                                 <td>make</td>
1217                                 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
1218                                 <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
1219                             </tr>
1220                             <tr>
1221                                 <td>m4.exe</td>
1222                                 <td>Interpreters</td>
1223                                 <td>m4</td>
1224                                 <td>GNU implementation of the traditional Unix macro
1225                                 processor</td>
1226                             </tr>
1227                             <tr>
1228                                 <td>cpio.exe</td>
1229                                 <td>Utils</td>
1230                                 <td>cpio</td>
1231                                 <td>A program to manage archives of files</td>
1232                             </tr>
1233                             <tr>
1234                                 <td>gawk.exe</td>
1235                                 <td>Utils</td>
1236                                 <td>awk</td>
1237                                 <td>Pattern-directed scanning and processing language</td>
1238                             </tr>
1239                             <tr>
1240                                 <td>file.exe</td>
1241                                 <td>Utils</td>
1242                                 <td>file</td>
1243                                 <td>Determines file type using 'magic' numbers</td>
1244                             </tr>
1245                             <tr>
1246                                 <td>zip.exe</td>
1247                                 <td>Archive</td>
1248                                 <td>zip</td>
1249                                 <td>Package and compress (archive) files</td>
1250                             </tr>
1251                             <tr>
1252                                 <td>unzip.exe</td>
1253                                 <td>Archive</td>
1254                                 <td>unzip</td>
1255                                 <td>Extract compressed files in a ZIP archive</td>
1256                             </tr>
1257                             <tr>
1258                                 <td>free.exe</td>
1259                                 <td>System</td>
1260                                 <td>procps</td>
1261                                 <td>Display amount of free and used memory in the system</td>
1262                             </tr>
1263                         </tbody>
1264                     </table>
1265                 </blockquote>
1266                 <p>
1267                 Note that the CYGWIN software can conflict with other non-CYGWIN
1268                 software on your Windows system.
1269                 CYGWIN provides a
1270                 <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1271                 known issues and problems, of particular interest is the
1272                 section on
1273                 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1274                 BLODA (applications that interfere with CYGWIN)</a>.
1275                 <p>
1276                 <b>WARNING:</b>
1277                 Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1278                 with the Visual Studio version. You need the Visual Studio
1279                 version of <tt>link.exe</tt>, not the CYGWIN one.
1280                 So it's important that the Visual Studio paths in PATH preceed
1281                 the CYGWIN path <tt>/usr/bin</tt>.
1282             </blockquote>
1283             <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
1284             <blockquote>
1285                 Microsoft DirectX 9.0 SDK (Summer 2004)
1286                 headers are required for building
1287                 OpenJDK.
1288                 This SDK can be downloaded from 
1289                 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
1290                 Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
1291                 If the link above becomes obsolete, the SDK can be found from 
1292                 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1293                 (search with "DirectX 9.0 SDK Update Summer 2004"). 
1294                 The location of this SDK can be set with 
1295                 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1296                 but it's normally found via the DirectX environment variable
1297                 <tt>DXSDK_DIR</tt>.
1298             </blockquote>
1299             <strong><a name="msvcrt"><tt>MSVCRT.DLL</tt></a></strong>
1300             <blockquote> 
1301                 <strong>i586 only:</strong>
1302                 The OpenJDK 32-bit build requires access to a redistributable
1303                 <tt>MSVCRT.DLL</tt>.
1304                 If the <tt>MSVCRT.DLL</tt> is not installed in 
1305                 the system32 directory set the 
1306                 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
1307                 variable to the location of this file.
1308                 <p> 
1309                 <strong>X64 only:</strong>
1310                 The OpenJDK 64-bit build requires access to a redistributable
1311                 <tt>MSVCRT.DLL</tt>, which is
1312                 usually supplied by the
1313                 <a href="#mssdk">Platform SDK</a>.
1314                 If it is not available from the Platform SDK,
1315                 set the 
1316                 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
1317                 variable to the location of this file.
1318             </blockquote>
1319             <strong><tt><a name="msvcr90">MSVCR90.DLL</a></tt></strong>
1320             <blockquote>
1321                 <strong>i586 only:</strong>
1322                 The 
1323                 OpenJDK
1324                 build requires access to a redistributable
1325                 <tt>MSVCR90.DLL</tt> which should be
1326                 supplied by the
1327                 <a href="#msvc">Visual Studio product</a>.
1328                 If the <tt>MSVCR90.DLL</tt> is not available from the
1329                 Visual Studio product
1330                 set the 
1331                 <a href="#ALT_MSVCR90_DLL_PATH"><tt>ALT_MSVCR90_DLL_PATH</tt></a>
1332                 variable to the location of this file.
1333             </blockquote>
1334         </blockquote>
1335         <!-- ------------------------------------------------------ -->
1336         <hr>
1337         <h2><a name="creating">Creating the Build</a></h2>
1338         <blockquote>
1339             Once a machine is setup to build the OpenJDK,
1340             the steps to create the build are fairly simple.
1341             The various ALT settings can either be made into  variables
1342             or can be supplied on the 
1343             <a href="#gmake"><tt><i>gmake</i></tt></a> 
1344             command.
1345             <ol>
1346                 <li>Use the sanity rule to double check all the ALT settings:
1347                     <blockquote>
1348                         <tt>
1349                             <i>gmake</i> 
1350                             sanity
1351                             [ARCH_DATA_MODEL=<i>32 or 64</i>]
1352                             [other "ALT_" overrides]
1353                         </tt>
1354                     </blockquote>
1355                 </li>
1356                 <li>Start the build with the command:
1357                     <blockquote>
1358                         <tt>
1359                             <i>gmake</i> 
1360                             [ARCH_DATA_MODEL=<i>32 or 64</i>]
1361                             [ALT_OUTPUTDIR=<i>output_directory</i>] 
1362                             [other "ALT_" overrides] 
1363                         </tt>
1364                     </blockquote>
1365                 </li>
1366             </ol>
1367             <p>
1368             <strong>Solaris:</strong>
1369             Note that ARCH_DATA_MODEL is really only needed on Solaris to
1370             indicate you want to built the 64-bit version.
1371             And before the Solaris 64-bit binaries can be used, they
1372             must be merged with the binaries from a separate 32-bit build. 
1373             The merged binaries may then be used in either 32-bit or 64-bit mode, with
1374             the selection occurring at runtime 
1375             with the <tt>-d32</tt> or <tt>-d64</tt> options. 
1376         </blockquote>
1377         <!-- ------------------------------------------------------ -->
1378         <hr>
1379         <h2><a name="testing">Testing the Build</a></h2>
1380         <blockquote>
1381             When the build is completed, you should see the generated
1382             binaries and associated files in the <tt>j2sdk-image</tt> 
1383             directory in the output directory. 
1384             The default output directory is
1385             <tt>build/<i>platform</i></tt>,
1386             where <tt><i>platform</i></tt> is one of
1387             <tt><ul>
1388                     <li>solaris-sparc</li>
1389                     <li>solaris-sparcv9</li>
1390                     <li>solaris-i586</li>
1391                     <li>solaris-amd64</li>
1392                     <li>linux-i586</li>
1393                     <li>linux-amd64</li>
1394                     <li>windows-i586</li>
1395                     <li>windows-amd64</li>
1396             </ul></tt>
1397             In particular, the 
1398             <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
1399             directory should contain executables for the 
1400             OpenJDK tools and utilities.
1401             <p>
1402             You can test that the build completed properly by using the build
1403             to run the various demos that you will find in the 
1404             <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
1405             directory.
1406             <p>
1407             The provided regression tests can be run with the <tt>jtreg</tt>
1408             utility from 
1409             <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
1410         </blockquote>
1411         <!-- ------------------------------------------------------ -->
1412         <hr>
1413         <h2><a name="variables">Environment/Make Variables</a></h2>
1414         <p>
1415         Some of the
1416         environment or make variables (just called <b>variables</b> in this
1417         document) that can impact the build are:
1418         <blockquote>
1419             <dl>
1420                 <dt><a name="path"><tt>PATH</tt></a> </dt>
1421                 <dd>Typically you want to set the <tt>PATH</tt> to include:
1422                     <ul>
1423                         <li>The location of the GNU make binary</li>
1424                         <li>The location of the Bootstrap JDK <tt>java</tt> 
1425                         (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
1426                         <li>The location of the C/C++ compilers 
1427                         (see <a href="#compilers"><tt>compilers</tt></a>)</li>
1428                         <li>The location or locations for the Unix command utilities
1429                         (e.g. <tt>/usr/bin</tt>)</li>
1430                     </ul>
1431                 </dd>
1432                 <dt><tt>MILESTONE</tt> </dt>
1433                 <dd>
1434                     The milestone name for the build (<i>e.g.</i>"beta"). 
1435                     The default value is "internal".
1436                 </dd>
1437                 <dt><tt>BUILD_NUMBER</tt> </dt>
1438                 <dd>
1439                     The build number for the build (<i>e.g.</i> "b27"). 
1440                     The default value is "b00".
1441                 </dd>
1442                 <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
1443                 <dd>The <tt>ARCH_DATA_MODEL</tt> variable
1444                     is used to specify whether the build is to generate 32-bit or 64-bit
1445                     binaries. 
1446                     The Solaris build supports either 32-bit or 64-bit builds, but
1447                     Windows and Linux will support only one, depending on the specific
1448                     OS being used.
1449                     Normally, setting this variable is only necessary on Solaris.
1450                     Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries, 
1451                     or to <tt>64</tt> for generating 64-bit binaries.
1452                 </dd>
1453                 <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
1454                 <dd>
1455                     The location of the bootstrap JDK installation. 
1456                     See <a href="#bootjdk">Bootstrap JDK</a> for more information.
1457                     You should always install your own local Bootstrap JDK and
1458                     always set <tt>ALT_BOOTDIR</tt> explicitly.
1459                 </dd>
1460                 <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
1461                 <dd>
1462                     The location of the binary plugs installation.
1463                     See <a href="#binaryplugs">Binary Plugs</a> for more information.
1464                     You should always have a local copy of a
1465                     recent Binary Plugs install image
1466                     and set this variable to that location.
1467                 </dd>
1468                 <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
1469                 <dd>
1470                     The location of a previously built JDK installation. 
1471                     See <a href="#importjdk">Optional Import JDK</a> for more information.
1472                 </dd>
1473                 <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
1474                 <dd>
1475                     An override for specifying the (absolute) path of where the
1476                     build output is to go.
1477                     The default output directory will be build/<i>platform</i>.
1478                 </dd>
1479                 <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
1480                 <dd>
1481                     The location of the C/C++ compiler.
1482                     The default varies depending on the platform. 
1483                 </dd>
1484                 <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
1485                 <dd>
1486                     The location of the <a href="#cacerts">cacerts</a> file.
1487                     The default will refer to 
1488                     <tt>jdk/src/share/lib/security/cacerts</tt>.
1489                 </dd>
1490                 <dt><tt><a name="ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt></dt>
1491                 <dd>
1492                     The location of the <a href="#jibx">JIBX libraries</a> file.
1493                     The default value is
1494                     <tt>$(ALT_SLASH_JAVA)/devtools/share/jibx/lib</tt>.
1495                 </dd>
1496                 <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
1497                 <dd>
1498                     The location of the CUPS header files.
1499                     See <a href="#cups">CUPS information</a> for more information.
1500                     If this path does not exist the fallback path is 
1501                     <tt>/usr/include</tt>.
1502                 </dd>
1503                 <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
1504                 <dd>
1505                     The location of the FreeType shared library. 
1506                     See <a href="#freetype">FreeType information</a> for details. 
1507                 </dd>
1508                 <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
1509                 <dd>
1510                     The location of the FreeType header files.
1511                     See <a href="#freetype">FreeType information</a> for details. 
1512                 </dd>
1513                 <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
1514                 <dd>
1515                     The default root location of the devtools.
1516                     The default value is 
1517                     <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
1518                 </dd>
1519                 <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
1520                 <dd>
1521                     The location of tools like the 
1522                     <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
1523                     binaries, but might also contain the GNU make utility
1524                     (<tt><i>gmake</i></tt>).
1525                     So this area is a bit of a grab bag, especially on Windows.
1526                     The default value depends on the platform and
1527                     Unix Commands being used.
1528                     On Linux the default will be 
1529                     <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>, 
1530                     on Solaris
1531                     <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>, 
1532                     and on Windows with CYGWIN
1533                     <tt>/usr/bin</tt>.
1534                 </dd>
1535                 <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
1536                 <dd>
1537                     <strong>Solaris only:</strong>
1538                     An override for specifying where the Unix CCS
1539                     command set are located.
1540                     The default location is <tt>/usr/ccs/bin</tt> 
1541                 </dd>
1542                 <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
1543                 <dd>
1544                     The default root location for many of the ALT path locations
1545                     of the following ALT variables.
1546                     The default value is 
1547                     <tt>"/java"</tt> on Solaris and Linux, 
1548                     <tt>"J:"</tt> on Windows.
1549                 </dd>
1550                 <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
1551                 <dd>
1552                     These are useful in managing builds on multiple platforms.
1553                     The default network location for all of the import JDK images
1554                     for all platforms. 
1555                     If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
1556                     is not set, this directory will be used and should contain 
1557                     the following directories:
1558                     <tt>solaris-sparc</tt>,
1559                     <tt>solaris-i586</tt>,
1560                     <tt>solaris-sparcv9</tt>,
1561                     <tt>solaris-amd64</tt>,
1562                     <tt>linux-i586</tt>,
1563                     <tt>linux-amd64</tt>,
1564                     <tt>windows-i586</tt>,
1565                     and
1566                     <tt>windows-amd64</tt>.
1567                     Where each of these directories contain the import JDK image
1568                     for that platform.
1569                 </dd>
1570                 <dt><a name="ALT_BUILD_BINARY_PLUGS_PATH"><tt>ALT_BUILD_BINARY_PLUGS_PATH</tt></a></dt>
1571                 <dd>
1572                     These are useful in managing builds on multiple platforms.
1573                     The default network location for all of the binary plug images
1574                     for all platforms. 
1575                     If <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
1576                     is not set, this directory will be used and should contain 
1577                     the following directories:
1578                     <tt>solaris-sparc</tt>,
1579                     <tt>solaris-i586</tt>,
1580                     <tt>solaris-sparcv9</tt>,
1581                     <tt>solaris-amd64</tt>,
1582                     <tt>linux-i586</tt>,
1583                     <tt>linux-amd64</tt>,
1584                     <tt>windows-i586</tt>,
1585                     and
1586                     <tt>windows-amd64</tt>.
1587                     Where each of these directories contain the binary plugs image
1588                     for that platform.
1589                 </dd>
1590                 <dt><strong>Windows specific:</strong></dt>
1591                 <dd>
1592                     <dl>
1593                         <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
1594                         <dd>
1595                             The location of the 
1596                             Microsoft Visual Studio
1597                             tools 'bin' directory.
1598                             The default is usually derived from
1599                             <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
1600                         </dd>
1601                         <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
1602                         <dd>
1603                             The location of the 
1604                             <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
1605                             The default will be to try and use the DirectX environment
1606                             variable <tt>DXSDK_DIR</tt>,
1607                             failing that, look in <tt>C:/DXSDK</tt>.
1608                         </dd>
1609                         <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
1610                         <dd>
1611                             The location of the 
1612                             <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>. 
1613                         </dd>
1614                         <dt><tt><a name="ALT_MSVCR90_DLL_PATH">ALT_MSVCR90_DLL_PATH</a></tt> </dt>
1615                         <dd>
1616                             <strong>i586 only:</strong>
1617                             The location of the 
1618                             <a href="#msvcr90"><tt>MSVCR90.DLL</tt></a>. 
1619                         </dd>
1620                     </dl>
1621                 </dd>
1622             </dl>
1623         </blockquote>
1624         <!-- ------------------------------------------------------ -->
1625         <hr>
1626         <h2><a name="troubleshooting">Troubleshooting</a></h2>
1627         <blockquote>
1628             A build can fail for any number of reasons. 
1629             Most failures
1630             are a result of trying to build in an environment in which all the
1631             pre-build requirements have not been met. 
1632             The first step in
1633             troubleshooting a build failure is to recheck that you have satisfied
1634             all the pre-build requirements for your platform.
1635             Look for the check list of the platform you are building on in the
1636             <a href="#contents">Table of Contents</a>.
1637             <p>
1638             You can validate your build environment by using the <tt>sanity</tt>
1639             target.
1640             Any errors listed
1641             will stop the build from starting, and any warnings may result in
1642             a flawed product build.
1643             We strongly encourage you to evaluate every
1644             sanity check warning and fix it if required, before you proceed
1645             further with your build.
1646             <p>
1647             Some of the more common problems with builds are briefly described
1648             below, with suggestions for remedies.
1649             <ul>
1650                 <li>
1651                     <b>Slow Builds:</b>
1652                     <blockquote>
1653                         If your build machine seems to be overloaded from too many
1654                         simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
1655                         variable to <tt>1</tt> (if you're using a multiple CPU
1656                         machine, setting it to more than the the number of CPUs is probably
1657                         not a good idea).
1658                         <p>
1659                         Creating the javadocs can be very slow, if you are running
1660                         javadoc, consider skipping that step.
1661                         <p>
1662                         Faster hardware and more RAM always helps too.
1663                         The VM build tends to be CPU intensive (many C++ compiles),
1664                         and the rest of the JDK will often be disk intensive.
1665                         <p>
1666                         Faster compiles are possible using a tool called
1667                         <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
1668                     </blockquote>
1669                 </li>
1670                 <li>
1671                     <b>File time issues:</b>
1672                     <blockquote>
1673                         If you see warnings that refer to file time stamps, e.g.
1674                         <blockquote>
1675                             <i>Warning message:</i><tt> File `xxx' has modification time in
1676                             the future.</tt>
1677                             <br>
1678                             <i>Warning message:</i> <tt> Clock skew detected. Your build may
1679                             be incomplete.</tt> 
1680                         </blockquote>
1681                         These warnings can occur when the clock on the build machine is out of
1682                         sync with the timestamps on the source files. Other errors, apparently
1683                         unrelated but in fact caused by the clock skew, can occur along with
1684                         the clock skew warnings. These secondary errors may tend to obscure the
1685                         fact that the true root cause of the problem is an out-of-sync clock.
1686                         For example, an out-of-sync clock has been known to cause an old
1687                         version of javac to be used to compile some files, resulting in errors
1688                         when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
1689                         in the 1.4 source code.
1690                         <p>
1691                         If you see these warnings, reset the clock on the build
1692                         machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
1693                         containing the build output, and restart the build from the beginning.
1694                     </blockquote>
1695                 </li>
1696                 <li>
1697                     <b>Error message: <tt>Trouble writing out table to disk</tt></b>
1698                     <blockquote>
1699                         Increase the amount of swap space on your build machine.
1700                     </blockquote>
1701                 </li>
1702                 <li>
1703                     <b>Error Message: <tt>libstdc++ not found:</tt></b>
1704                     <blockquote>
1705                         This is caused by a missing libstdc++.a library.
1706                         This is installed as part of a specific package
1707                         (e.g. libstdc++.so.devel.386).
1708                         By default some 64-bit Linux versions (e.g. Fedora)
1709                         only install the 64-bit version of the libstdc++ package.
1710                         Various parts of the JDK build require a static
1711                         link of the C++ runtime libraries to allow for maximum
1712                         portability of the built images.
1713                     </blockquote>
1714                 </li>
1715                 <li>
1716                     <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
1717                     <blockquote>
1718                         This is probably an issue with SELinux (See
1719                         <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
1720                         http://en.wikipedia.org/wiki/SELinux</a>).
1721                         Parts of the VM is built without the <tt>-fPIC</tt> for
1722                         performance reasons.
1723                         <p>
1724                         To completely disable SELinux:
1725                         <tt>
1726                             <ol>
1727                                 <li>$ su root</li>
1728                                 <li># system-config-securitylevel</li>
1729                                 <li>In the window that appears, select the SELinux tab</li>
1730                                 <li>Disable SELinux</li>
1731                             </ol>
1732                         </tt>
1733                         <p>
1734                         Alternatively, instead of completely disabling it you could
1735                         disable just this one check.
1736                         <tt>
1737                             <ol>
1738                                 <li>Select System->Administration->SELinux Management</li>
1739                                 <li>In the SELinux Management Tool which appears, 
1740                                 select "Boolean" from the menu on the left</li>
1741                                 <li>Expand the "Memory Protection" group</li>
1742                                 <li>Check the first item, labeled
1743                                 "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
1744                             </ol>
1745                         </tt>
1746                     </blockquote>
1747                 </li>
1748                 <li>
1749                     <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b>
1750                     <blockquote>
1751                         The CYGWIN software can conflict with other non-CYGWIN
1752                         software. See the CYGWIN FAQ section on
1753                         <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1754                         BLODA (applications that interfere with CYGWIN)</a>.
1755                     </blockquote>
1756                 </li>
1757                 <li>
1758                     <b>Windows Error Message: <tt>*** multiple target patterns.  Stop.</tt></b>
1759                     <blockquote>
1760                         The CYGWIN make version 3.81 may not like the Windows <tt>C:/</tt>
1761                         style paths, it may not like the ':' character in the path
1762                         when used in a makefile target definition.
1763                         See the <a href="#gmake"><tt><i>gmake</i></tt></a> section.
1764                     </blockquote>
1765                 </li>
1766             </ul>
1767         </blockquote>
1768         <hr>
1769     </body>
1770 </html>