README-builds.html

Wed, 22 Dec 2010 12:27:14 -0800

author
ohair
date
Wed, 22 Dec 2010 12:27:14 -0800
changeset 277
4d044e6e1080
parent 276
dc9eb519c6ed
parent 275
4346ba98938b
child 278
c1af03f88627
permissions
-rw-r--r--

Merge

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

mercurial