./README-builds.html

Print this page
rev 406 : Enable OpenJDK builds on Windows with MinGW/MSYS


  78                                         <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
  79                                         <li><a href="#gcc">Linux gcc/binutils</a> </li>
  80                                         <li><a href="#studio">Sun Studio</a> </li>
  81                                     </ul>
  82                                 </li>
  83                                 <li><a href="#zip">Zip and Unzip</a> </li>
  84                                 <li><a href="#freetype">FreeType2 Fonts</a> </li>
  85                                 <li>Linux and Solaris:
  86                                     <ul>
  87                                         <li><a href="#cups">CUPS Include files</a> </li>
  88                                         <li><a href="#xrender">XRender Include files</a></li>
  89                                     </ul>
  90                                 </li>
  91                                 <li>Linux only:
  92                                     <ul>
  93                                         <li><a href="#alsa">ALSA files</a> </li>
  94                                     </ul>
  95                                 </li>
  96                                 <li>Windows only:
  97                                     <ul>
  98                                         <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>

  99                                         <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
 100                                     </ul>
 101                                 </li>
 102                             </ul>
 103                         </li>
 104                     </ul>
 105                 </li>
 106                 <li><a href="#creating">Creating the Build</a> </li>
 107                 <li><a href="#testing">Testing the Build</a> </li>
 108                 <li><a href="#variables">Environment/Make Variables</a></li>
 109                 <li><a href="#troubleshooting">Troubleshooting</a></li>
 110             </ul>
 111         </blockquote>
 112 
 113         <!-- ------------------------------------------------------ -->
 114         <hr>
 115         <h2><a name="hg">Use of Mercurial</a></h2>
 116         <blockquote>
 117             The OpenJDK sources are maintained with the revision control system
 118             <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.


 662                     and should work fine for you.
 663                     If this version is not 3.81 or newer,
 664                     see the <a href="#buildgmake">"Building GNU make"</a> section.
 665                 </li>
 666                 <li>
 667                     <strong>Solaris:</strong>
 668                     Do NOT use <tt>/usr/bin/make</tt> on Solaris.
 669                     If your Solaris system has the software
 670                     from the Solaris Companion CD installed, 
 671                     you should try and use <tt>gmake</tt>
 672                     which will be located in either the <tt>/opt/sfw/bin</tt> or 
 673                     <tt>/usr/sfw/bin</tt> directory.
 674                     In more recent versions of Solaris GNU make might be found
 675                     at <tt>/usr/bin/gmake</tt>.<br>
 676                     <b>NOTE:</b> It is very likely that this <tt>gmake</tt>
 677                     could be 3.80, you need 3.81, in which case,
 678                     see the <a href="#buildgmake">"Building GNU make"</a> section.
 679                 </li>
 680                 <li>
 681                     <strong>Windows:</strong>
 682                     Make sure you start your build inside a bash/sh/ksh shell
 683                     and are using a <tt>make.exe</tt> utility built for that
 684                     environment (a cygwin <tt>make.exe</tt> is not the same
 685                     as a <tt>make.exe</tt> built for something like
 686                     <a href="http://www.mkssoftware.com/">MKS</a>). 
 687                     <br>
 688                     <b>WARNING:</b> Watch out on some make 3.81 versions, it may
 689                     not work due to a lack of support for MS-DOS drive letter paths
 690                     like <tt>C:/</tt> or <tt>C:\</tt>.
 691                     <br>
 692                     You may be able to use the information at the
 693                     <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
 694                         mozilla developer center</a>
 695                     on this topic.
 696                     <br>
 697                     It's hoped that when make 3.82 starts shipping in a future cygwin
 698                     release that this MS-DOS path issue will be fixed.
 699                     <br>
 700                     It may be possible to download the version at
 701                     <a href="http://www.cmake.org/files/cygwin/make.exe">
 702                         www.cmake.org make.exe</a>.
 703                     <br>
 704                     It might be necessary for you to build your own GNU make 3.81,
 705                     see the <a href="#buildgmake">"Building GNU make"</a> section
 706                     in that case.
 707                 </li>
 708             </ul>
 709             <p>
 710                 Information on GNU make, and access to ftp download sites, are
 711                 available on the
 712                 <a href="http://www.gnu.org/software/make/make.html" target="_blank">
 713                     GNU make web site
 714                 </a>.
 715                 The latest source to GNU make is available at
 716                 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
 717                     ftp.gnu.org/pub/gnu/make/</a>.
 718             </p>
 719             <!-- ------------------------------------------------------ -->
 720             <h4><a name="buildgmake">Building GNU make</a></h4>
 721             <blockquote>
 722                 First step is to get the GNU make 3.81 source from
 723                 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
 724                     ftp.gnu.org/pub/gnu/make/</a>.
 725                 Building is a little different depending on the OS and unix toolset
 726                 on Windows:
 727                 <ul>
 728                     <li>
 729                         <strong>Linux:</strong>
 730                         <tt>./configure && make</tt>
 731                     </li>
 732                     <li>
 733                         <strong>Solaris:</strong>
 734                         <tt>./configure && gmake CC=gcc</tt>
 735                     </li>
 736                     <li>
 737                         <strong>Windows for CYGWIN:</strong>
 738                         <tt>./configure && make</tt>
 739                     </li>
 740                     <li>
 741                         <strong>Windows for MKS: (CYGWIN is recommended)</strong>
 742                         <tt>./configure && make -f Makefile.win32</tt>












 743                     </li>
 744                 </ul>
 745             </blockquote>
 746         </blockquote>
 747         <!-- ------------------------------------------------------ -->
 748         <hr>
 749         <h3><a name="linux">Basic Linux System Setup</a></h3>
 750         <blockquote>
 751             <strong>i586 only:</strong>
 752             The minimum recommended hardware for building the Linux version
 753             is a Pentium class processor or better, at least 256 MB of RAM, and
 754             approximately 1.5 GB of free disk space.
 755             <p> 
 756                 <strong>X64 only:</strong>
 757                 The minimum recommended hardware for building the Linux
 758                 version is an AMD Opteron class processor, at least 512 MB of RAM, and
 759                 approximately 4 GB of free disk space.
 760             <p> 
 761                 The build will use the tools contained in
 762                 <tt>/bin</tt> and


 869             <strong>i586 only:</strong>
 870             The minimum recommended hardware for building the 32-bit or X86
 871             Windows version is an Pentium class processor or better, at least
 872             512 MB of RAM, and approximately 600 MB of free disk space.
 873             <strong>
 874                 NOTE: The Windows build machines need to use the
 875                 file system NTFS. 
 876                 Build machines formatted to FAT32 will not work 
 877                 because FAT32 doesn't support case-sensitivity in file names.
 878             </strong>
 879             <p> 
 880                 <strong>X64 only:</strong>
 881                 The minimum recommended hardware for building
 882                 the Windows X64 version is an AMD Opteron class processor, at least 1
 883                 GB of RAM, and approximately 10 GB of free disk space.
 884         </blockquote>
 885         <!-- ------------------------------------------------------ -->
 886         <h4><a name="paths">Windows Paths</a></h4>
 887         <blockquote>
 888             <strong>Windows:</strong>
 889             Note that GNU make is a historic utility and is based very
 890             heavily on shell scripting, so it does not tolerate the Windows habit
 891             of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
 892             Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
 893             there is always a 'short' pathname without spaces for any path that 
 894             contains spaces.
 895             Unfortunately, this short pathname can be somewhat dynamic and the
 896             formula is difficult to explain.
 897             You can use <tt>cygpath</tt> utility to map pathnames with spaces
 898             or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
 899             (called 'mixed'), e.g.
 900             <tt>cygpath -s -m "<i>path</i>"</tt>.
 901             <p>
 902                 The makefiles will try to translate any pathnames supplied
 903                 to it into the <tt>C:/</tt> style automatically.



































































 904             <p>
 905                 Note that use of CYGWIN creates a unique problem with regards to
 906                 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
 907                 the <tt>PATH</tt> variable contains directories
 908                 separated with the ";" character (Solaris and Linux uses ":").
 909                 With CYGWIN, it uses ":", but that means that paths like "C:/path"
 910                 cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
 911                 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
 912                 which CYGWIN understands, but only CYGWIN understands.
 913                 So be careful with paths on Windows.
































 914         </blockquote>
 915         <!-- ------------------------------------------------------ -->
 916         <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
 917         <blockquote>
 918             <ol>
 919                 <li>
 920                     Install the
 921                     <a href="#cygwin">CYGWIN product</a>. 

 922                 </li>
 923                 <li>
 924                     Install the 
 925                     <a href="#bootjdk">Bootstrap JDK</a>, set
 926                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
 927                 </li>
 928                 <li>
 929                     <a href="#importjdk">Optional Import JDK</a>, set
 930                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
 931                 </li>
 932                 <li>
 933                     Install the
 934                     <a href="#msvc32">Microsoft Visual Studio Compilers</a>).
 935                 </li>
 936                 <li>
 937                     Setup all environment variables for compilers 
 938                     (see <a href="#msvc32">compilers</a>).
 939                 </li>
 940                 <li>
 941                     Install 


1227                     the package provided by the particular version of Linux that
1228                     you are using.
1229                 <p>
1230                     The CUPS header files can always be downloaded from
1231                     <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1232                     The variable
1233                     <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1234                     can be used to override the default location of the
1235                     CUPS Header files.
1236             </blockquote>
1237             <!-- ------------------------------------------------------ -->
1238             <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
1239             <blockquote>
1240                 <p>
1241                     <strong>Solaris:</strong>
1242                     XRender header files are required for building the
1243                     OpenJDK on Solaris.
1244                     The XRender header file is included with the other X11 header files
1245                     in the package <strong>SFWxwinc</strong> on new enough versions of
1246                     Solaris and will be installed in
1247                     <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>

1248                 </p><p>
1249                     <strong>Linux:</strong>
1250                     XRender header files are required for building the
1251                     OpenJDK on Linux.
1252                     The Linux header files are usually available from a "Xrender"
1253                     development package, it's recommended that you try and use
1254                     the package provided by the particular distribution of Linux that
1255                     you are using.
1256                 </p>
1257             </blockquote>
1258             <!-- ------------------------------------------------------ -->
1259             <h4><a name="freetype">FreeType 2</a></h4>
1260             <blockquote>
1261                 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1262                 On Unix systems required files can be available as part of your
1263                 distribution (while you still may need to upgrade them).
1264                 Note that you need development version of package that 
1265                 includes both FreeType library and header files.
1266                 <p>
1267                     You can always download latest FreeType version from the


1397                             <tr>
1398                                 <td>Binary Name</td>
1399                                 <td>Category</td>
1400                                 <td>Package</td>
1401                                 <td>Description</td>
1402                             </tr>
1403                         </thead>
1404                         <tbody>
1405                             <tr>
1406                                 <td>ar.exe</td>
1407                                 <td>Devel</td>
1408                                 <td>binutils</td>
1409                                 <td>The GNU assembler, linker and binary
1410                                     utilities</td>
1411                             </tr>
1412                             <tr>
1413                                 <td>make.exe</td>
1414                                 <td>Devel</td>
1415                                 <td>make</td>
1416                                 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
1417                                     <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>


1418                             </tr>
1419                             <tr>
1420                                 <td>m4.exe</td>
1421                                 <td>Interpreters</td>
1422                                 <td>m4</td>
1423                                 <td>GNU implementation of the traditional Unix macro
1424                                     processor</td>
1425                             </tr>
1426                             <tr>
1427                                 <td>cpio.exe</td>
1428                                 <td>Utils</td>
1429                                 <td>cpio</td>
1430                                 <td>A program to manage archives of files</td>
1431                             </tr>
1432                             <tr>
1433                                 <td>gawk.exe</td>
1434                                 <td>Utils</td>
1435                                 <td>awk</td>
1436                                 <td>Pattern-directed scanning and processing language</td>
1437                             </tr>
1438                             <tr>
1439                                 <td>file.exe</td>
1440                                 <td>Utils</td>
1441                                 <td>file</td>
1442                                 <td>Determines file type using 'magic' numbers</td>
1443                             </tr>
1444                             <tr>
1445                                 <td>zip.exe</td>
1446                                 <td>Archive</td>
1447                                 <td>zip</td>
1448                                 <td>Package and compress (archive) files</td>
1449                             </tr>
1450                             <tr>
1451                                 <td>unzip.exe</td>
1452                                 <td>Archive</td>


1462                         </tbody>
1463                     </table>
1464                 </blockquote>
1465                 <p>
1466                     Note that the CYGWIN software can conflict with other non-CYGWIN
1467                     software on your Windows system.
1468                     CYGWIN provides a
1469                     <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1470                     known issues and problems, of particular interest is the
1471                     section on
1472                     <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1473                         BLODA (applications that interfere with CYGWIN)</a>.
1474                 <p>
1475                     <b>WARNING:</b>
1476                     Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1477                     with the Visual Studio version. You need the Visual Studio
1478                     version of <tt>link.exe</tt>, not the CYGWIN one.
1479                     So it's important that the Visual Studio paths in PATH preceed
1480                     the CYGWIN path <tt>/usr/bin</tt>.
1481             </blockquote>















1482             <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
1483             <blockquote>
1484                 Microsoft DirectX 9.0 SDK (Summer 2004)
1485                 headers are required for building
1486                 OpenJDK.
1487                 This SDK can be downloaded from 
1488                 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
1489                     Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
1490                 If the link above becomes obsolete, the SDK can be found from 
1491                 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1492                 (search with "DirectX 9.0 SDK Update Summer 2004"). 
1493                 The location of this SDK can be set with 
1494                 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1495                 but it's normally found via the DirectX environment variable
1496                 <tt>DXSDK_DIR</tt>.
1497             </blockquote>
1498             <strong><a name="msvcrNN"><tt>MSVCR100.DLL</tt></a></strong>
1499             <blockquote> 
1500                 The OpenJDK build requires access to a redistributable
1501                 <tt>MSVCR100.DLL</tt>.




  78                                         <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
  79                                         <li><a href="#gcc">Linux gcc/binutils</a> </li>
  80                                         <li><a href="#studio">Sun Studio</a> </li>
  81                                     </ul>
  82                                 </li>
  83                                 <li><a href="#zip">Zip and Unzip</a> </li>
  84                                 <li><a href="#freetype">FreeType2 Fonts</a> </li>
  85                                 <li>Linux and Solaris:
  86                                     <ul>
  87                                         <li><a href="#cups">CUPS Include files</a> </li>
  88                                         <li><a href="#xrender">XRender Include files</a></li>
  89                                     </ul>
  90                                 </li>
  91                                 <li>Linux only:
  92                                     <ul>
  93                                         <li><a href="#alsa">ALSA files</a> </li>
  94                                     </ul>
  95                                 </li>
  96                                 <li>Windows only:
  97                                     <ul>
  98                                         <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>) <strong>or</strong></li>
  99                                         <li>Minimalist GNU for Windows (<a href="#msys">MinGW/MSYS</a>)</li>
 100                                         <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
 101                                     </ul>
 102                                 </li>
 103                             </ul>
 104                         </li>
 105                     </ul>
 106                 </li>
 107                 <li><a href="#creating">Creating the Build</a> </li>
 108                 <li><a href="#testing">Testing the Build</a> </li>
 109                 <li><a href="#variables">Environment/Make Variables</a></li>
 110                 <li><a href="#troubleshooting">Troubleshooting</a></li>
 111             </ul>
 112         </blockquote>
 113 
 114         <!-- ------------------------------------------------------ -->
 115         <hr>
 116         <h2><a name="hg">Use of Mercurial</a></h2>
 117         <blockquote>
 118             The OpenJDK sources are maintained with the revision control system
 119             <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.


 663                     and should work fine for you.
 664                     If this version is not 3.81 or newer,
 665                     see the <a href="#buildgmake">"Building GNU make"</a> section.
 666                 </li>
 667                 <li>
 668                     <strong>Solaris:</strong>
 669                     Do NOT use <tt>/usr/bin/make</tt> on Solaris.
 670                     If your Solaris system has the software
 671                     from the Solaris Companion CD installed, 
 672                     you should try and use <tt>gmake</tt>
 673                     which will be located in either the <tt>/opt/sfw/bin</tt> or 
 674                     <tt>/usr/sfw/bin</tt> directory.
 675                     In more recent versions of Solaris GNU make might be found
 676                     at <tt>/usr/bin/gmake</tt>.<br>
 677                     <b>NOTE:</b> It is very likely that this <tt>gmake</tt>
 678                     could be 3.80, you need 3.81, in which case,
 679                     see the <a href="#buildgmake">"Building GNU make"</a> section.
 680                 </li>
 681                 <li>
 682                     <strong>Windows:</strong>
 683                     Make sure you start your build inside a bash/sh/ksh shell and are
 684                     using a <tt>make.exe</tt> utility built for that
 685                     environment.<br/>
 686                     <strong>MKS</strong> builds need
 687                     a native Windows version of GNU make
 688                     (see <a href="#buildgmake">Building GNU make</a>).<br/>
 689                     <strong>Cygwin</strong> builds need
 690                     a make version which was specially compiled for the Cygwin environment
 691                     (see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong>
 692                     the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong>
 693                     work because it does not support drive letters in paths. Make sure that
 694                     your version of make will be found before the Cygwins default make by 
 695                     setting an appropriate <tt>PATH</tt> environment variable or by removing
 696                     Cygwin's make after you built your own make version.<br/>
 697                     <strong>MinGW/MSYS</strong> builds you can use the default make which 
 698                     comes with the environment.









 699                 </li>
 700             </ul>
 701             <p>
 702                 Information on GNU make, and access to ftp download sites, are
 703                 available on the
 704                 <a href="http://www.gnu.org/software/make/make.html" target="_blank">
 705                     GNU make web site
 706                 </a>.
 707                 The latest source to GNU make is available at
 708                 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
 709                     ftp.gnu.org/pub/gnu/make/</a>.
 710             </p>
 711             <!-- ------------------------------------------------------ -->
 712             <h4><a name="buildgmake">Building GNU make</a></h4>
 713             <blockquote>
 714                 First step is to get the GNU make 3.81 (or newer) source from
 715                 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
 716                     ftp.gnu.org/pub/gnu/make/</a>.
 717                 Building is a little different depending on the OS and unix toolset
 718                 on Windows:
 719                 <ul>
 720                     <li>
 721                         <strong>Linux:</strong>
 722                         <tt>./configure && make</tt>
 723                     </li>
 724                     <li>
 725                         <strong>Solaris:</strong>
 726                         <tt>./configure && gmake CC=gcc</tt>
 727                     </li>
 728                     <li>
 729                         <strong>Windows for CYGWIN:</strong><br/>
 730                         <tt>./configure</tt><br/>
 731                         Add the line <tt>#define HAVE_CYGWIN_SHELL 1</tt> to the end of <tt>config.h</tt><br/>
 732                         <tt>make</tt><br/>
 733                         <br/>
 734                         This should produce <tt>make.exe</tt> in the current directory.
 735                     </li>
 736                     <li>
 737                         <strong>Windows for MKS: </strong><br/>
 738                         Edit <tt>config.h.W32</tt> and uncomment the line <tt>#define HAVE_MKS_SHELL 1</tt><br/>
 739                         Set the environment for your native compiler (e.g. by calling:<br/>
 740                         <tt>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /xp /x64)</tt>
 741                         <tt>nmake -f NMakefile.win32</tt>
 742                         <br/>
 743                         This should produce <tt>WinDebug/make.exe</tt> and <tt>WinRel/make.exe</tt>
 744                         <br/>
 745                         If you get the error: <tt>NMAKE : fatal error U1045: spawn failed : Permission denied</tt>
 746                         you have to set the <tt>Read &amp; execute</tt> permission for the file <tt>subproc.bat</tt>.
 747                     </li>
 748                 </ul>
 749             </blockquote>
 750         </blockquote>
 751         <!-- ------------------------------------------------------ -->
 752         <hr>
 753         <h3><a name="linux">Basic Linux System Setup</a></h3>
 754         <blockquote>
 755             <strong>i586 only:</strong>
 756             The minimum recommended hardware for building the Linux version
 757             is a Pentium class processor or better, at least 256 MB of RAM, and
 758             approximately 1.5 GB of free disk space.
 759             <p> 
 760                 <strong>X64 only:</strong>
 761                 The minimum recommended hardware for building the Linux
 762                 version is an AMD Opteron class processor, at least 512 MB of RAM, and
 763                 approximately 4 GB of free disk space.
 764             <p> 
 765                 The build will use the tools contained in
 766                 <tt>/bin</tt> and


 873             <strong>i586 only:</strong>
 874             The minimum recommended hardware for building the 32-bit or X86
 875             Windows version is an Pentium class processor or better, at least
 876             512 MB of RAM, and approximately 600 MB of free disk space.
 877             <strong>
 878                 NOTE: The Windows build machines need to use the
 879                 file system NTFS. 
 880                 Build machines formatted to FAT32 will not work 
 881                 because FAT32 doesn't support case-sensitivity in file names.
 882             </strong>
 883             <p> 
 884                 <strong>X64 only:</strong>
 885                 The minimum recommended hardware for building
 886                 the Windows X64 version is an AMD Opteron class processor, at least 1
 887                 GB of RAM, and approximately 10 GB of free disk space.
 888         </blockquote>
 889         <!-- ------------------------------------------------------ -->
 890         <h4><a name="paths">Windows Paths</a></h4>
 891         <blockquote>
 892             <strong>Windows:</strong>
 893             Note that GNU make, the shell and other Unix-tools required during the build
 894             do not tolerate the Windows habit
 895             of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
 896             Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
 897             there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename">
 898             "8.3" pathname</a> without spaces for any path that contains spaces.
 899             Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the
 900             other files and directories inside a given directory) and can not be 
 901             algorithmicly calculated by only looking at a specific path name.



 902             <p>
 903                 The makefiles will try to translate any pathnames supplied
 904                 to it into the <tt>C:/</tt> style automatically.
 905             </p>
 906             <p>
 907                 Special care has to be taken if native Windows applications
 908                 like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed
 909                 by Unix-tools like <tt>make</tt> or <tt>sh</tt>!
 910             </p>
 911         </blockquote>
 912         <!-- ------------------------------------------------------ -->
 913         <h4><a name="paths">Windows build environments</a></h4>
 914         <blockquote>
 915             Building on Windows requires a Unix-like environment, notably a Unix-like shell.
 916             There are several such environments available of which 
 917             <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>, 
 918             <a href="http://www.cygwin.com/">Cygwin</a> and 
 919             <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for
 920             the OpenJDK build. One of the differences of these three systems is the way
 921             how they handle Windows path names, particularly path names which contain
 922             spaces, backslashes as path separators and possibly drive letters. Depending
 923             on the use case and the specifics of each environment these path problems can
 924             be solved by a combination of quoting whole paths, translating backslashes to
 925             forward slashes, escaping backslashes with additional backslashes and
 926             translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename">
 927             "8.3" version</a>.
 928             <p>
 929                 As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17),
 930                 MKS builds are known to be the fastes Windows builds while MingGW/MSYS
 931                 builds are slightly slower (about 10%) than MKS builds and Cygwin builds
 932                 require nearly twice the time (about 180%) of MKS builds (e.g. on a
 933                 DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system
 934                 the complete OpenJDK 8 product build takes about 49min with MKS, 54min with
 935                 MinGW/MSYS and 88min with Cygwin).
 936             </p>
 937             <p>
 938                 Mixing tools from the different Unix emulation environments is no good
 939                 idea and will probably not work!
 940             </p>
 941             <p>
 942                 <strong>MKS:</strong> is a commercial product which includes
 943                 all the Unix utilities which are required to build the OpenJDK except GNU
 944                 make. In pre-OpenJDK times it was the only supported build environment on
 945                 Windows. The MKS tools support Windows paths with drive letters and
 946                 forward slashes as path separator. Paths in environment variables like for
 947                 example <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'.
 948             </p>
 949             <p>
 950                 Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths
 951                 with spaces to short (8.3) path names,e .g.
 952                 <tt>dosname -s "<i>path</i>"</tt>.   
 953             </p>
 954             <p>
 955                 If you are using the MKS environment, you need a native Windows version
 956                 of Gnu make <a href="#buildgmake">which you can easily build yourself</a>. 
 957             </p>
 958             <p>
 959                 <strong>Cygwin:</strong>
 960                 is an open source, Linux-like environment which tries to emulate
 961                 a complete POSIX layer on Windows. It tries to be smart about path names
 962                 and can usually handle all kinds of paths if they are correctly quoted
 963                 or escaped altough internally it maps drive letters <tt>&lt;drive&gt;:</tt> 
 964                 to a virtual directory <tt>/cygdrive/&lt;drive&gt;</tt>.
 965             </p>
 966             <p>
 967                 You can always use the <tt>cygpath</tt> utility to map pathnames with spaces
 968                 or the backslash character into the <tt>C:/</tt> style of pathname
 969                 (called 'mixed'), e.g.
 970                 <tt>cygpath -s -m "<i>path</i>"</tt>.
 971             </p>
 972             <p>
 973                 Note that the use of CYGWIN creates a unique problem with regards to
 974                 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
 975                 the <tt>PATH</tt> variable contains directories
 976                 separated with the ";" character (Solaris and Linux uses ":").
 977                 With CYGWIN, it uses ":", but that means that paths like "C:/path"
 978                 cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
 979                 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
 980                 which CYGWIN understands, but only CYGWIN understands.
 981             </p>
 982             <p>
 983                 If you are using the Cygwin environment, you need to 
 984                 <a href="#buildgmake">compile your own version</a>
 985                 of GNU make because the default Cygwin make can not handle drive letters in paths. 
 986             </p>
 987             <p>
 988                 <strong>MinGW/MSYS:</strong> 
 989                 MinGW ("Minimalist GNU for Windows") is a collection of free Windows
 990                 specific header files and import libraries combined with GNU toolsets that
 991                 allow one to produce native Windows programs that do not rely on any
 992                 3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building
 993                 applications and programs which depend on traditional UNIX tools to
 994                 be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>.
 995             </p>
 996             <p>
 997                 Like Cygwin, MinGW/MSYS can handle different types of path formats. They
 998                 are internally converted to paths with forward slashes and drive letters
 999                 <tt>&lt;drive&gt;:</tt> replaced by a virtual
1000                 directory <tt>/&lt;drive&gt;</tt>.  Additionally, MSYS automatically
1001                 detects binaries compiled for the MSYS environment and feeds them with the
1002                 internal, Unix-style path names. If native Windows applications are called
1003                 from within MSYS programs their path arguments are automatically converted
1004                 back to Windows style path names with drive letters and backslashes as
1005                 path separators. This may cause problems for Windows applications which
1006                 use forward slashes as parameter separator (e.g. <tt>cl /nologe /I</tt>)
1007                 because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion">
1008                 replace such parameters by drive letters</a>.
1009             </p>
1010             <p>
1011                 If you are using the MinGW/MSYS system you can use the default make
1012                 version supplied by the environment.
1013             </p>
1014         </blockquote>
1015         <!-- ------------------------------------------------------ -->
1016         <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
1017         <blockquote>
1018             <ol>
1019                 <li>
1020                     Install one of the 
1021                     <a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or 
1022                     <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments. 
1023                 </li>
1024                 <li>
1025                     Install the 
1026                     <a href="#bootjdk">Bootstrap JDK</a>, set
1027                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
1028                 </li>
1029                 <li>
1030                     <a href="#importjdk">Optional Import JDK</a>, set
1031                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
1032                 </li>
1033                 <li>
1034                     Install the
1035                     <a href="#msvc32">Microsoft Visual Studio Compilers</a>).
1036                 </li>
1037                 <li>
1038                     Setup all environment variables for compilers 
1039                     (see <a href="#msvc32">compilers</a>).
1040                 </li>
1041                 <li>
1042                     Install 


1328                     the package provided by the particular version of Linux that
1329                     you are using.
1330                 <p>
1331                     The CUPS header files can always be downloaded from
1332                     <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1333                     The variable
1334                     <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1335                     can be used to override the default location of the
1336                     CUPS Header files.
1337             </blockquote>
1338             <!-- ------------------------------------------------------ -->
1339             <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
1340             <blockquote>
1341                 <p>
1342                     <strong>Solaris:</strong>
1343                     XRender header files are required for building the
1344                     OpenJDK on Solaris.
1345                     The XRender header file is included with the other X11 header files
1346                     in the package <strong>SFWxwinc</strong> on new enough versions of
1347                     Solaris and will be installed in
1348                     <tt>/usr/X11/include/X11/extensions/Xrender.h</tt> or
1349                     <tt>/usr/openwin/share/include/X11/extensions/Xrender.h</tt>
1350                 </p><p>
1351                     <strong>Linux:</strong>
1352                     XRender header files are required for building the
1353                     OpenJDK on Linux.
1354                     The Linux header files are usually available from a "Xrender"
1355                     development package, it's recommended that you try and use
1356                     the package provided by the particular distribution of Linux that
1357                     you are using.
1358                 </p>
1359             </blockquote>
1360             <!-- ------------------------------------------------------ -->
1361             <h4><a name="freetype">FreeType 2</a></h4>
1362             <blockquote>
1363                 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1364                 On Unix systems required files can be available as part of your
1365                 distribution (while you still may need to upgrade them).
1366                 Note that you need development version of package that 
1367                 includes both FreeType library and header files.
1368                 <p>
1369                     You can always download latest FreeType version from the


1499                             <tr>
1500                                 <td>Binary Name</td>
1501                                 <td>Category</td>
1502                                 <td>Package</td>
1503                                 <td>Description</td>
1504                             </tr>
1505                         </thead>
1506                         <tbody>
1507                             <tr>
1508                                 <td>ar.exe</td>
1509                                 <td>Devel</td>
1510                                 <td>binutils</td>
1511                                 <td>The GNU assembler, linker and binary
1512                                     utilities</td>
1513                             </tr>
1514                             <tr>
1515                                 <td>make.exe</td>
1516                                 <td>Devel</td>
1517                                 <td>make</td>
1518                                 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
1519                                     <b>NOTE</b>: the Cygwin make can not be used to build the 
1520                                     OpenJDK, you only need it to build your own version of make 
1521                                     (see <a href="#gmake">the GNU make section</a>)</td>
1522                             </tr>
1523                             <tr>
1524                                 <td>m4.exe</td>
1525                                 <td>Interpreters</td>
1526                                 <td>m4</td>
1527                                 <td>GNU implementation of the traditional Unix macro
1528                                     processor</td>
1529                             </tr>
1530                             <tr>






1531                                 <td>gawk.exe</td>
1532                                 <td>Utils</td>
1533                                 <td>awk</td>
1534                                 <td>Pattern-directed scanning and processing language</td>
1535                             </tr>
1536                             <tr>
1537                                 <td>file.exe</td>
1538                                 <td>Utils</td>
1539                                 <td>file</td>
1540                                 <td>Determines file type using 'magic' numbers</td>
1541                             </tr>
1542                             <tr>
1543                                 <td>zip.exe</td>
1544                                 <td>Archive</td>
1545                                 <td>zip</td>
1546                                 <td>Package and compress (archive) files</td>
1547                             </tr>
1548                             <tr>
1549                                 <td>unzip.exe</td>
1550                                 <td>Archive</td>


1560                         </tbody>
1561                     </table>
1562                 </blockquote>
1563                 <p>
1564                     Note that the CYGWIN software can conflict with other non-CYGWIN
1565                     software on your Windows system.
1566                     CYGWIN provides a
1567                     <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1568                     known issues and problems, of particular interest is the
1569                     section on
1570                     <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1571                         BLODA (applications that interfere with CYGWIN)</a>.
1572                 <p>
1573                     <b>WARNING:</b>
1574                     Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1575                     with the Visual Studio version. You need the Visual Studio
1576                     version of <tt>link.exe</tt>, not the CYGWIN one.
1577                     So it's important that the Visual Studio paths in PATH preceed
1578                     the CYGWIN path <tt>/usr/bin</tt>.
1579             </blockquote>
1580             <strong> Minimalist GNU for Windows (<a name="msys">MinGW/MSYS</a>)</strong>
1581             <blockquote> 
1582                 Alternatively, the set of unix command tools for the OpenJDK build on 
1583                 Windows can be supplied by 
1584                 <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>.
1585                 <p>
1586                     In addition to the tools which will be installed by default you have
1587                     to manually install the <tt>msys-zip</tt> and <tt>msys-unzip</tt> packages.
1588                     This can be easily done with the MinGW command line installer:<br/>
1589                     <tt><br/>
1590                         mingw-get.exe install msys-zip<br/>
1591                         mingw-get.exe install msys-unzip<br/>
1592                     </tt>
1593                 </p>
1594             </blockquote>
1595             <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
1596             <blockquote>
1597                 Microsoft DirectX 9.0 SDK (Summer 2004)
1598                 headers are required for building
1599                 OpenJDK.
1600                 This SDK can be downloaded from 
1601                 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
1602                     Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
1603                 If the link above becomes obsolete, the SDK can be found from 
1604                 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1605                 (search with "DirectX 9.0 SDK Update Summer 2004"). 
1606                 The location of this SDK can be set with 
1607                 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1608                 but it's normally found via the DirectX environment variable
1609                 <tt>DXSDK_DIR</tt>.
1610             </blockquote>
1611             <strong><a name="msvcrNN"><tt>MSVCR100.DLL</tt></a></strong>
1612             <blockquote> 
1613                 The OpenJDK build requires access to a redistributable
1614                 <tt>MSVCR100.DLL</tt>.