README-builds.html

Wed, 17 Jun 2009 20:53:01 +0100

author
andrew
date
Wed, 17 Jun 2009 20:53:01 +0100
changeset 90
60b818e5e4f9
parent 74
caba6a812b19
child 106
38c6ee1015aa
permissions
-rw-r--r--

6851515: awt_p.h incorporates a chunk of the XRender header
Summary: Use XRender header directly rather than copying chunks locally
Reviewed-by: anthony, ohair

     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>.
   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>

mercurial