Tue, 29 Jan 2013 20:16:12 -0800
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>
58 <ul>
59 <li><a href="#drops">Managing the Source Drops</a></li>
60 </ul>
61 </li>
62 <li><a href="#building">Build Information</a>
63 <ul>
64 <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
65 <li><a href="#linux">Basic Linux System Setup</a> </li>
66 <li><a href="#solaris">Basic Solaris System Setup</a> </li>
67 <li><a href="#windows">Basic Windows System Setup</a> </li>
68 <li><a href="#macosx">Basic Mac OS X System Setup</a></li>
69 <li><a href="#dependencies">Build Dependencies</a>
70 <ul>
71 <li><a href="#bootjdk">Bootstrap JDK</a> </li>
72 <li><a href="#importjdk">Optional Import JDK</a> </li>
73 <li><a href="#ant">Ant 1.7.1</a> </li>
74 <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
75 <li><a href="#compilers">Compilers</a>
76 <ul>
77 <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
78 <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
79 <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
80 <li><a href="#gcc">Linux gcc/binutils</a> </li>
81 <li><a href="#studio">Sun Studio</a> </li>
82 </ul>
83 </li>
84 <li><a href="#zip">Zip and Unzip</a> </li>
85 <li><a href="#freetype">FreeType2 Fonts</a> </li>
86 <li>Linux and Solaris:
87 <ul>
88 <li><a href="#cups">CUPS Include files</a> </li>
89 <li><a href="#xrender">XRender Include files</a></li>
90 </ul>
91 </li>
92 <li>Linux only:
93 <ul>
94 <li><a href="#alsa">ALSA files</a> </li>
95 </ul>
96 </li>
97 <li>Windows only:
98 <ul>
99 <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>) <strong>or</strong></li>
100 <li>Minimalist GNU for Windows (<a href="#msys">MinGW/MSYS</a>)</li>
101 <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
102 </ul>
103 </li>
104 </ul>
105 </li>
106 </ul>
107 </li>
108 <li><a href="#creating">Creating the Build</a> </li>
109 <li><a href="#testing">Testing the Build</a> </li>
110 <li><a href="#variables">Environment/Make Variables</a></li>
111 <li><a href="#troubleshooting">Troubleshooting</a></li>
112 <li><a href="#newbuild">The New Build</a></li>
113 </ul>
114 </blockquote>
116 <!-- ------------------------------------------------------ -->
117 <hr>
118 <h2><a name="hg">Use of Mercurial</a></h2>
119 <blockquote>
120 The OpenJDK sources are maintained with the revision control system
121 <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.
122 If you are new to Mercurial, please see the
123 <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a>
124 or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>.
125 The first few chapters of the book provide an excellent overview of
126 Mercurial, what it is and how it works.
127 <br>
128 For using Mercurial with the OpenJDK refer to the
129 <a href="http://openjdk.java.net/guide/repositories.html#installConfig">
130 Developer Guide: Installing and Configuring Mercurial</a>
131 section for more information.
133 <!-- ------------------------------------------------------ -->
134 <h3><a name="get_source">Getting the Source</a></h3>
135 <blockquote>
136 To get the entire set of OpenJDK Mercurial repositories
137 use the script <code>get_source.sh</code> located in the root repository:
138 <blockquote>
139 <tt>
140 hg clone http://hg.openjdk.java.net/jdk8/jdk8 <i>YourOpenJDK</i>
141 <br>cd <i>YourOpenJDK</i>
142 <br>sh ./get_source.sh
143 </tt>
144 </blockquote>
145 Once you have all the repositories, the
146 script <tt>make/scripts/hgforest.sh</tt>
147 can be used to repeat the same <tt>hg</tt>
148 command on every repository in the forest, e.g.
149 <blockquote>
150 <tt>
151 cd <i>YourOpenJDK</i>
152 <br>sh ./make/scripts/hgforest.sh pull -u
153 </tt>
154 </blockquote>
155 </blockquote>
157 </blockquote>
159 <!-- ------------------------------------------------------ -->
160 <hr>
161 <h2><a name="MBE">Minimum Build Environments</a></h2>
162 <blockquote>
163 This file often describes specific requirements for what we call the
164 "minimum build environments" (MBE) for this
165 specific release of the JDK,
166 Building with the MBE will generate the most compatible
167 bits that install on, and run correctly on, the most variations
168 of the same base OS and hardware architecture.
169 These usually represent what is often called the
170 least common denominator platforms.
171 It is understood that most developers will NOT be using these
172 specific platforms, and in fact creating these specific platforms
173 may be difficult due to the age of some of this software.
174 <p>
175 The minimum OS and C/C++ compiler versions needed for building the
176 OpenJDK:
177 <p>
178 <table border="1">
179 <thead>
180 <tr>
181 <th>Base OS and Architecture</th>
182 <th>OS</th>
183 <th>C/C++ Compiler</th>
184 <th>BOOT JDK</th>
185 </tr>
186 </thead>
187 <tbody>
188 <tr>
189 <td>Linux X86 (32-bit)</td>
190 <td>Fedora 9</td>
191 <td>gcc 4.3 </td>
192 <td>JDK 6u18</td>
193 </tr>
194 <tr>
195 <td>Linux X64 (64-bit)</td>
196 <td>Fedora 9</td>
197 <td>gcc 4.3 </td>
198 <td>JDK 6u18</td>
199 </tr>
200 <tr>
201 <td>Solaris SPARC (32-bit)</td>
202 <td>Solaris 10 Update 6</td>
203 <td>Sun Studio 12 Update 1 + patches</td>
204 <td>JDK 6u18</td>
205 </tr>
206 <tr>
207 <td>Solaris SPARCV9 (64-bit)</td>
208 <td>Solaris 10 Update 6</td>
209 <td>Sun Studio 12 Update 1 + patches</td>
210 <td>JDK 6u18</td>
211 </tr>
212 <tr>
213 <td>Solaris X86 (32-bit)</td>
214 <td>Solaris 10 Update 6</td>
215 <td>Sun Studio 12 Update 1 + patches</td>
216 <td>JDK 6u18</td>
217 </tr>
218 <tr>
219 <td>Solaris X64 (64-bit)</td>
220 <td>Solaris 10 Update 6</td>
221 <td>Sun Studio 12 Update 1 + patches</td>
222 <td>JDK 6u18</td>
223 </tr>
224 <tr>
225 <td>Windows X86 (32-bit)</td>
226 <td>Windows XP</td>
227 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
228 <td>JDK 6u18</td>
229 </tr>
230 <tr>
231 <td>Windows X64 (64-bit)</td>
232 <td>Windows Server 2003 - Enterprise x64 Edition</td>
233 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
234 <td>JDK 6u18</td>
235 </tr>
236 <tr>
237 <td>Mac OS X X64 (64-bit)</td>
238 <td>Mac OS X 10.7.3 "Lion"</td>
239 <td>XCode 4.1 or later</td>
240 <td>Java for OS X Lion Update 1</td>
241 </tr>
242 </tbody>
243 </table>
244 <p>
245 These same sources do indeed build on many more systems than the
246 above older generation systems, again the above is just a minimum.
247 <p>
248 Compilation problems with newer or different C/C++ compilers is a
249 common problem.
250 Similarly, compilation problems related to changes to the
251 <tt>/usr/include</tt> or system header files is also a
252 common problem with newer or unreleased OS versions.
253 Please report these types of problems as bugs so that they
254 can be dealt with accordingly.
255 </blockquote>
256 <!-- ------------------------------------------------------ -->
257 <hr>
258 <h2><a name="SDBE">Specific Developer Build Environments</a></h2>
259 <blockquote>
260 We won't be listing all the possible environments, but
261 we will try to provide what information we have available to us.
262 </blockquote>
263 <!-- ------------------------------------------------------ -->
264 <h3><a name="fedora">Fedora</a></h3>
265 <blockquote>
266 <h4>Fedora 9</h4>
267 <p>
268 <blockquote>
269 After installing <a href="http://fedoraproject.org">Fedora</a> 9
270 you need to install several build dependencies. The simplest
271 way to do it is to execute the following commands as user
272 <tt>root</tt>:
273 <p/>
274 <code>yum-builddep java-1.6.0-openjdk</code>
275 <p/>
276 <code>yum install gcc gcc-c++</code>
277 <p/>
278 In addition, it's necessary to set a few environment variables for the build:
280 <p/>
281 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
282 </blockquote>
283 <h4>Fedora 10</h4>
284 <p>
285 <blockquote>
286 After installing <a href="http://fedoraproject.org">Fedora</a> 10
287 you need to install several build dependencies. The simplest
288 way to do it is to execute the following commands as user
289 <tt>root</tt>:
290 <p/>
291 <code>yum-builddep java-1.6.0-openjdk</code>
292 <p/>
293 <code>yum install gcc gcc-c++</code>
294 <p/>
295 In addition, it's necessary to set a few environment variables for the build:
297 <p/>
298 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
299 </blockquote>
300 <h4>Fedora 11</h4>
301 <p>
302 <blockquote>
303 After installing <a href="http://fedoraproject.org">Fedora</a> 11
304 you need to install several build dependencies. The simplest
305 way to do it is to execute the following commands as user
306 <tt>root</tt>:
307 <p/>
308 <code>yum-builddep java-1.6.0-openjdk</code>
309 <p/>
310 <code>yum install gcc gcc-c++</code>
311 <p/>
312 In addition, it's necessary to set a few environment variables for the build:
314 <p/>
315 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
316 </blockquote>
317 </blockquote>
318 <!-- ------------------------------------------------------ -->
319 <h3><a name="centos">CentOS 5.5</a></h3>
320 <blockquote>
321 After installing
322 <a href="http://www.centos.org/">CentOS 5.5</a>
323 you need to make sure you have
324 the following Development bundles installed:
325 <blockquote>
326 <ul>
327 <li>Development Libraries</li>
328 <li>Development Tools</li>
329 <li>Java Development</li>
330 <li>X Software Development (Including XFree86-devel)</li>
331 </ul>
332 </blockquote>
333 <p>
334 Plus the following packages:
335 <blockquote>
336 <ul>
337 <li>cups devel: Cups Development Package</li>
338 <li>alsa devel: Alsa Development Package</li>
339 <li>ant: Ant Package</li>
340 <li>Xi devel: libXi.so Development Package</li>
341 </ul>
342 </blockquote>
343 <p>
344 The freetype 2.3 packages don't seem to be available,
345 but the freetype 2.3 sources can be downloaded, built,
346 and installed easily enough from
347 <a href="http://downloads.sourceforge.net/freetype">
348 the freetype site</a>.
349 Build and install with something like:
350 <blockquote>
351 <tt>./configure && make && sudo -u root make install</tt>
352 </blockquote>
353 <p>
354 Mercurial packages could not be found easily, but a Google
355 search should find ones, and they usually include Python if
356 it's needed.
357 </blockquote>
358 <!-- ------------------------------------------------------ -->
359 <h3><a name="debian">Debian</a></h3>
360 <blockquote>
361 <h4>Debian 5.0 (Lenny)</h4>
362 <p>
363 <blockquote>
364 After installing <a href="http://debian.org">Debian</a> 5
365 you need to install several build dependencies.
366 The simplest way to install the build dependencies is to
367 execute the following commands as user <tt>root</tt>:
368 <p/>
369 <code>aptitude build-dep openjdk-6</code>
370 <p/>
371 <code>aptitude install openjdk-6-jdk libmotif-dev</code>
372 <p/>
373 In addition, it's necessary to set a few environment variables for the build:
374 <p/>
375 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
376 </blockquote>
377 </blockquote>
378 <!-- ====================================================== -->
379 <h3><a name="ubuntu">Ubuntu</a></h3>
380 <blockquote>
381 <h4>Ubuntu 8.04</h4>
382 <p>
383 <blockquote>
384 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04
385 you need to install several build dependencies.
386 <p/>
387 First, you need to enable the universe repository in the
388 Software Sources application and reload the repository
389 information. The Software Sources application is available
390 under the System/Administration menu.
391 <p/>
392 The simplest way to install the build dependencies is to
393 execute the following commands:
394 <p/>
395 <code>sudo aptitude build-dep openjdk-6</code>
396 <p/>
397 <code>sudo aptitude install openjdk-6-jdk</code>
398 <p/>
399 In addition, it's necessary to set a few environment variables for the build:
400 <p/>
401 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
402 </blockquote>
403 <h4>Ubuntu 8.10</h4>
404 <p>
405 <blockquote>
406 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10
407 you need to install several build dependencies. The simplest
408 way to do it is to execute the following commands:
409 <p/>
410 <code>sudo aptitude build-dep openjdk-6</code>
411 <p/>
412 <code>sudo aptitude install openjdk-6-jdk</code>
413 <p/>
414 In addition, it's necessary to set a few environment variables for the build:
415 <p/>
416 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
417 </blockquote>
418 <h4>Ubuntu 9.04</h4>
419 <p>
420 <blockquote>
421 After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04
422 you need to install several build dependencies. The simplest
423 way to do it is to 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 </blockquote>
434 <!-- ====================================================== -->
435 <h3><a name="opensuse">OpenSUSE</a></h3>
436 <blockquote>
437 <h4>OpenSUSE 11.1</h4>
438 <p>
439 <blockquote>
440 After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1
441 you need to install several build dependencies.
442 The simplest way to install the build dependencies is to
443 execute the following commands:
444 <p/>
445 <code>sudo zypper source-install -d java-1_6_0-openjdk</code>
446 <p/>
447 <code>sudo zypper install make</code>
448 <p/>
449 In addition, it is necessary to set a few environment variables for the build:
450 <p/>
451 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
452 <p/>
453 Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
454 <p/>
455 <code>export -n JAVA_HOME</code>
456 </blockquote>
457 </blockquote>
458 <!-- ====================================================== -->
459 <h3><a name="mandriva">Mandriva</a></h3>
460 <blockquote>
461 <h4>Mandriva Linux One 2009 Spring</h4>
462 <p>
463 <blockquote>
464 After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring
465 you need to install several build dependencies.
466 The simplest way to install the build dependencies is to
467 execute the following commands as user <tt>root</tt>:
468 <p/>
469 <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>
470 <p/>
471 In addition, it is necessary to set a few environment variables for the build:
472 <p/>
473 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
474 </blockquote>
475 </blockquote>
476 <!-- ====================================================== -->
477 <h3><a name="opensolaris">OpenSolaris</a></h3>
478 <blockquote>
479 <h4>OpenSolaris 2009.06</h4>
480 <p>
481 <blockquote>
482 After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06
483 you need to install several build dependencies.
484 The simplest way to install the build dependencies is to
485 execute the following commands:
486 <p/>
487 <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
488 <p/>
489 In addition, it is necessary to set a few environment variables for the build:
490 <p/>
491 <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
492 <p/>
493 Finally, you need to make sure that the build process can find the Sun Studio compilers:
494 <p/>
495 <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
496 </blockquote>
497 </blockquote>
498 <!-- ------------------------------------------------------ -->
499 <hr>
500 <h2><a name="directories">Source Directory Structure</a></h2>
501 <blockquote>
502 <p>
503 The source code for the OpenJDK is delivered in a set of
504 directories:
505 <tt>hotspot</tt>,
506 <tt>langtools</tt>,
507 <tt>corba</tt>,
508 <tt>jaxws</tt>,
509 <tt>jaxp</tt>,
510 and
511 <tt>jdk</tt>.
512 The <tt>hotspot</tt> directory contains the source code and make
513 files for building the OpenJDK Hotspot Virtual Machine.
514 The <tt>langtools</tt> directory contains the source code and make
515 files for building the OpenJDK javac and language tools.
516 The <tt>corba</tt> directory contains the source code and make
517 files for building the OpenJDK Corba files.
518 The <tt>jaxws</tt> directory contains the source code and make
519 files for building the OpenJDK JAXWS files.
520 The <tt>jaxp</tt> directory contains the source code and make
521 files for building the OpenJDK JAXP files.
522 The <tt>jdk</tt> directory contains the source code and make files for
523 building the OpenJDK runtime libraries and misc files.
524 The top level <tt>Makefile</tt>
525 is used to build the entire OpenJDK.
527 <h3><a name="drops">Managing the Source Drops</a></h3>
528 <blockquote>
529 <p>
530 The repositories <tt>jaxp</tt> and <tt>jaxws</tt> actually
531 do not contain the sources for JAXP or JAX-WS.
532 These products have their own open source procedures at their
533 <a href="http://jaxp.java.net/">JAXP</a> and
534 <a href="http://jax-ws.java.net/">JAX-WS</a> home pages.
535 The OpenJDK project does need access to these sources to build
536 a complete JDK image because JAXP and JAX-WS are part of the JDK.
537 The current process for delivery of the JAXP and JAX-WS sources
538 involves so called "source drop bundles" downloaded from a public
539 website.
540 There are many reasons for this current mechanism, and it is
541 understood that this is not ideal for the open source community.
542 It is possible this process could change in the future.
543 <br>
544 <b>NOTE:</b> The <a href="http://download.java.net/openjdk/jdk8/">
545 Complete OpenJDK Source Bundles</a> <u>will</u> contain the JAXP and
546 JAX-WS sources.
547 </p>
549 <h4><a name="dropcreation">Creation of New Source Drop Bundles</a></h4>
550 <blockquote>
551 <ol>
552 <li>
553 The JAXP or JAX-WS team prepares a new zip bundle,
554 places a copy in a public download area on java.net,
555 sends us a link and a list of CRs (Change Request Numbers).
556 The older download bundles should not be deleted.
557 It is the responsibility of the JAXP and JAX-WS team to
558 place the proper GPL legal notices on the sources
559 and do any filtering or java re-packaging for the
560 OpenJDK instances of these classes.
561 </li>
562 <li>
563 The OpenJDK team copies this new bundle into shared
564 area (e.g. <tt>/java/devtools/share/jdk8-drops</tt>).
565 Older bundles are never deleted so we retain the history.
566 </li>
567 <li>
568 The OpenJDK team edits the ant property file
569 <tt>jaxp/jaxp.properties</tt> or
570 <tt>jaxws/jaxws.properties</tt> to update the
571 base URL, the zip bundle name, and the MD5 checksum
572 of the zip bundle
573 (on Solaris: <tt>sum -c md5 <i>bundlename</i></tt>)
574 </li>
575 <li>
576 OpenJDK team reviews and commits those changes with the
577 given CRs.
578 </li>
579 </ol>
580 </blockquote>
582 <h4><a name="dropusage">Using Source Drop Bundles</a></h4>
583 <blockquote>
584 <p>
585 The ant scripts that build <tt>jaxp</tt> and <tt>jaxws</tt>
586 will attempt to locate these zip bundles from the directory
587 in the environment variable
588 <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt>.
589 The checksums protect from getting the wrong, corrupted, or
590 improperly modified sources.
591 Once the sources are made available, the population will not
592 happen again unless a <tt>make clobber</tt> is requested
593 or the <tt>jaxp/drop/</tt> or <tt>jaxws/drop/</tt>
594 directory is explicitly deleted.
595 <br>
596 <b>NOTE:</b> The default Makefile and ant script behavior
597 is to NOT download these bundles from the public http site.
598 In general, doing downloads
599 during the build process is not advised, it creates too much
600 unpredictability in the build process.
601 However, you can use <tt>make ALLOW_DOWNLOADS=true</tt> to
602 tell the ant script that the download of the zip bundle is
603 acceptable.
604 </p>
605 <p>
606 The recommended procedure for keeping a cache of these
607 source bundles would be to download them once, place them
608 in a directory outside the repositories, and then set
609 <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> to refer
610 to that directory.
611 These drop bundles do change occasionally, so the newer
612 bundles may need to be added to this area from time to time.
613 </p>
614 </blockquote>
615 </blockquote>
616 </blockquote>
617 <!-- ------------------------------------------------------ -->
618 <hr>
619 <h2><a name="building">Build Information</a></h2>
620 <blockquote>
621 Building the OpenJDK
622 is done with a <a href="#gmake">GNU <tt>make</tt></a> command line
623 and various
624 environment or make variable settings that direct the makefile rules
625 to where various components have been installed.
626 Where possible the makefiles will attempt to located the various
627 components in the default locations or any component specific
628 variable settings.
629 When the normal defaults fail or components cannot be found,
630 the various
631 <tt>ALT_*</tt> variables (alternates)
632 can be used to help the makefiles locate components.
633 <p>
634 Refer to the bash/sh/ksh setup file
635 <tt>jdk/make/jdk_generic_profile.sh</tt>
636 if you need help in setting up your environment variables.
637 A build could be as simple as:
638 <blockquote>
639 <pre><tt>
640 bash
641 . jdk/make/jdk_generic_profile.sh
642 <a href="#gmake"><tt>make</tt></a> sanity && <a href="#gmake"><tt>make</tt></a>
643 </tt></pre>
644 </blockquote>
645 <p>
646 Of course ksh or sh would work too.
647 But some customization will probably be necessary.
648 The <tt>sanity</tt> rule will make some basic checks on build
649 dependencies and generate appropriate warning messages
650 regarding missing, out of date, or newer than expected components
651 found on your system.
652 </blockquote>
653 <!-- ------------------------------------------------------ -->
654 <hr>
655 <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
656 <blockquote>
657 The Makefiles in the OpenJDK are only valid when used with the
658 GNU version of the utility command <tt>make</tt>
659 (<tt><i>gmake</i></tt>).
660 A few notes about using GNU make:
661 <ul>
662 <li>
663 You need GNU make version 3.81 or newer.
664 </li>
665 <li>
666 Place the location of the GNU make binary in the <tt>PATH</tt>.
667 </li>
668 <li>
669 <strong>Linux:</strong>
670 The <tt>/usr/bin/make</tt> should be 3.81 or newer
671 and should work fine for you.
672 If this version is not 3.81 or newer,
673 see the <a href="#buildgmake">"Building GNU make"</a> section.
674 </li>
675 <li>
676 <strong>Solaris:</strong>
677 Do NOT use <tt>/usr/bin/make</tt> on Solaris.
678 If your Solaris system has the software
679 from the Solaris Companion CD installed,
680 you should try and use <tt>gmake</tt>
681 which will be located in either the <tt>/opt/sfw/bin</tt> or
682 <tt>/usr/sfw/bin</tt> directory.
683 In more recent versions of Solaris GNU make might be found
684 at <tt>/usr/bin/gmake</tt>.<br>
685 <b>NOTE:</b> It is very likely that this <tt>gmake</tt>
686 could be 3.80, you need 3.81, in which case,
687 see the <a href="#buildgmake">"Building GNU make"</a> section.
688 </li>
689 <li>
690 <strong>Windows:</strong>
691 Make sure you start your build inside a bash/sh/ksh shell and are
692 using a <tt>make.exe</tt> utility built for that environment.<br/>
693 <strong>MKS</strong> builds need a native Windows version of GNU make
694 (see <a href="#buildgmake">Building GNU make</a>).<br/>
695 <strong>Cygwin</strong> builds need
696 a make version which was specially compiled for the Cygwin environment
697 (see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong>
698 the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong>
699 work because it does not support drive letters in paths. Make sure that
700 your version of make will be found before the Cygwins default make by
701 setting an appropriate <tt>PATH</tt> environment variable or by removing
702 Cygwin's make after you built your own make version.<br/>
703 <strong>MinGW/MSYS</strong> builds can use the default make which
704 comes with the environment.
705 </li>
706 </ul>
707 <p>
708 Information on GNU make, and access to ftp download sites, are
709 available on the
710 <a href="http://www.gnu.org/software/make/make.html" target="_blank">
711 GNU make web site
712 </a>.
713 The latest source to GNU make is available at
714 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
715 ftp.gnu.org/pub/gnu/make/</a>.
716 </p>
717 <!-- ------------------------------------------------------ -->
718 <h4><a name="buildgmake">Building GNU make</a></h4>
719 <blockquote>
720 First step is to get the GNU make 3.81 (or newer) source from
721 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
722 ftp.gnu.org/pub/gnu/make/</a>.
723 Building is a little different depending on the OS and unix toolset
724 on Windows:
725 <ul>
726 <li>
727 <strong>Linux:</strong>
728 <tt>./configure && make</tt>
729 </li>
730 <li>
731 <strong>Solaris:</strong>
732 <tt>./configure && gmake CC=gcc</tt>
733 </li>
734 <li>
735 <strong>Windows for CYGWIN:</strong><br/>
736 <tt>./configure</tt><br/>
737 Add the line <tt>#define HAVE_CYGWIN_SHELL 1</tt> to the end of <tt>config.h</tt><br/>
738 <tt>make</tt><br/>
739 <br/>
740 This should produce <tt>make.exe</tt> in the current directory.
741 </li>
742 <li>
743 <strong>Windows for MKS:</strong><br/>
744 Edit <tt>config.h.W32</tt> and uncomment the line <tt>#define HAVE_MKS_SHELL 1</tt><br/>
745 Set the environment for your native compiler (e.g. by calling:<br/>
746 <tt>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /xp /x64)</tt>
747 <tt>nmake -f NMakefile.win32</tt>
748 <br/>
749 This should produce <tt>WinDebug/make.exe</tt> and <tt>WinRel/make.exe</tt>
750 <br/>
751 If you get the error: <tt>NMAKE : fatal error U1045: spawn failed : Permission denied</tt>
752 you have to set the <tt>Read & execute</tt> permission for the file <tt>subproc.bat</tt>.
753 </li>
754 </ul>
755 </blockquote>
756 </blockquote>
757 <!-- ------------------------------------------------------ -->
758 <hr>
759 <h3><a name="linux">Basic Linux System Setup</a></h3>
760 <blockquote>
761 <strong>i586 only:</strong>
762 The minimum recommended hardware for building the Linux version
763 is a Pentium class processor or better, at least 256 MB of RAM, and
764 approximately 1.5 GB of free disk space.
765 <p>
766 <strong>X64 only:</strong>
767 The minimum recommended hardware for building the Linux
768 version is an AMD Opteron class processor, at least 512 MB of RAM, and
769 approximately 4 GB of free disk space.
770 <p>
771 The build will use the tools contained in
772 <tt>/bin</tt> and
773 <tt>/usr/bin</tt>
774 of a standard installation of the Linux operating environment.
775 You should ensure that these directories are in your
776 <tt>PATH</tt>.
777 <p>
778 Note that some Linux systems have a habit of pre-populating
779 your environment variables for you, for example <tt>JAVA_HOME</tt>
780 might get pre-defined for you to refer to the JDK installed on
781 your Linux system.
782 You will need to unset <tt>JAVA_HOME</tt>.
783 It's a good idea to run <tt>env</tt> and verify the
784 environment variables you are getting from the default system
785 settings make sense for building the
786 OpenJDK.
787 </blockquote>
788 <!-- ------------------------------------------------------ -->
789 <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
790 <blockquote>
791 <ol>
792 <li>
793 Install the
794 <a href="#bootjdk">Bootstrap JDK</a>, set
795 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
796 </li>
797 <li>
798 <a href="#importjdk">Optional Import JDK</a>, set
799 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
800 </li>
801 <li>
802 Install or upgrade the <a href="#freetype">FreeType development
803 package</a>.
804 </li>
805 <li>
806 Install
807 <a href="#ant">Ant 1.7.1 or newer</a>,
808 make sure it is in your PATH.
809 </li>
810 </ol>
811 </blockquote>
812 <!-- ------------------------------------------------------ -->
813 <hr>
814 <h3><a name="solaris">Basic Solaris System Setup</a></h3>
815 <blockquote>
816 The minimum recommended hardware for building the
817 Solaris SPARC version is an UltraSPARC with 512 MB of RAM.
818 For building
819 the Solaris x86 version, a Pentium class processor or better and at
820 least 512 MB of RAM are recommended.
821 Approximately 1.4 GB of free disk
822 space is needed for a 32-bit build.
823 <p>
824 If you are building the 64-bit version, you should
825 run the command "isainfo -v" to verify that you have a
826 64-bit installation, it should say <tt>sparcv9</tt> or
827 <tt>amd64</tt>.
828 An additional 7 GB of free disk space is needed
829 for a 64-bit build.
830 <p>
831 The build uses the tools contained in <tt>/usr/ccs/bin</tt>
832 and <tt>/usr/bin</tt> of a standard developer or full installation of
833 the Solaris operating environment.
834 <p>
835 Solaris patches specific to the JDK can be downloaded from the
836 <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
837 SunSolve JDK Solaris patches download page</a>.
838 You should ensure that the latest patch cluster for
839 your version of the Solaris operating environment has also
840 been installed.
841 </blockquote>
842 <!-- ------------------------------------------------------ -->
843 <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
844 <blockquote>
845 <ol>
846 <li>
847 Install the
848 <a href="#bootjdk">Bootstrap JDK</a>, set
849 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
850 </li>
851 <li>
852 <a href="#importjdk">Optional Import JDK</a>, set
853 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
854 </li>
855 <li>
856 Install the
857 <a href="#studio">Sun Studio Compilers</a>, set
858 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
859 </li>
860 <li>
861 Install the
862 <a href="#cups">CUPS Include files</a>, set
863 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
864 </li>
865 <li>
866 Install the <a href="#xrender">XRender Include files</a>.
867 </li>
868 <li>
869 Install
870 <a href="#ant">Ant 1.7.1 or newer</a>,
871 make sure it is in your PATH.
872 </li>
873 </ol>
874 </blockquote>
875 <!-- ------------------------------------------------------ -->
876 <hr>
877 <h3><a name="windows">Basic Windows System Setup</a></h3>
878 <blockquote>
879 <strong>i586 only:</strong>
880 The minimum recommended hardware for building the 32-bit or X86
881 Windows version is an Pentium class processor or better, at least
882 512 MB of RAM, and approximately 600 MB of free disk space.
883 <strong>
884 NOTE: The Windows build machines need to use the
885 file system NTFS.
886 Build machines formatted to FAT32 will not work
887 because FAT32 doesn't support case-sensitivity in file names.
888 </strong>
889 <p>
890 <strong>X64 only:</strong>
891 The minimum recommended hardware for building
892 the Windows X64 version is an AMD Opteron class processor, at least 1
893 GB of RAM, and approximately 10 GB of free disk space.
894 </blockquote>
895 <!-- ------------------------------------------------------ -->
896 <h4><a name="paths">Windows Paths</a></h4>
897 <blockquote>
898 <strong>Windows:</strong>
899 Note that GNU make, the shell and other Unix-tools required during the build
900 do not tolerate the Windows habit
901 of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
902 Luckily on most Windows systems, you can use <tt>/</tt>instead of <tt>\</tt>, and
903 there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename">
904 "8.3" pathname</a> without spaces for any path that contains spaces.
905 Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the
906 other files and directories inside a given directory) and can not be
907 algorithmicly calculated by only looking at a specific path name.
908 <p>
909 The makefiles will try to translate any pathnames supplied
910 to it into the <tt>C:/</tt> style automatically.
911 </p>
912 <p>
913 Special care has to be taken if native Windows applications
914 like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed
915 by Unix-tools like <tt>make</tt> or <tt>sh</tt>!
916 </p>
917 </blockquote>
918 <!-- ------------------------------------------------------ -->
919 <h4><a name="paths">Windows build environments</a></h4>
920 <blockquote>
921 Building on Windows requires a Unix-like environment, notably a Unix-like shell.
922 There are several such environments available of which
923 <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>,
924 <a href="http://www.cygwin.com/">Cygwin</a> and
925 <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for
926 the OpenJDK build. One of the differences of these three systems is the way
927 they handle Windows path names, particularly path names which contain
928 spaces, backslashes as path separators and possibly drive letters. Depending
929 on the use case and the specifics of each environment these path problems can
930 be solved by a combination of quoting whole paths, translating backslashes to
931 forward slashes, escaping backslashes with additional backslashes and
932 translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename">
933 "8.3" version</a>.
934 <p>
935 As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17),
936 MKS builds are known to be the fastest Windows builds while MingGW/MSYS
937 builds are slightly slower (about 10%) than MKS builds and Cygwin builds
938 require nearly twice the time (about 180%) of MKS builds (e.g. on a
939 DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system
940 the complete OpenJDK 8 product build takes about 49min with MKS, 54min with
941 MinGW/MSYS and 88min with Cygwin).
942 </p>
943 <p>
944 Mixing tools from the different Unix emulation environments is not a good
945 idea and will probably not work!
946 </p>
947 <p>
948 <strong>MKS:</strong> is a commercial product which includes
949 all the Unix utilities which are required to build the OpenJDK except GNU
950 make. In pre-OpenJDK times it was the only supported build environment on
951 Windows. The MKS tools support Windows paths with drive letters and
952 forward slashes as path separator. Paths in environment variables like (for
953 example) <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'.
954 </p>
955 <p>
956 Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths
957 with spaces to short (8.3) path names,e .g.
958 <tt>dosname -s "<i>path</i>"</tt>.
959 </p>
960 <p>
961 If you are using the MKS environment, you need a native Windows version
962 of Gnu make <a href="#buildgmake">which you can easily build yourself</a>.
963 </p>
964 <p>
965 <strong>Cygwin:</strong>
966 is an open source, Linux-like environment which tries to emulate
967 a complete POSIX layer on Windows. It tries to be smart about path names
968 and can usually handle all kinds of paths if they are correctly quoted
969 or escaped although internally it maps drive letters <tt><drive>:</tt>
970 to a virtual directory <tt>/cygdrive/<drive></tt>.
971 </p>
972 <p>
973 You can always use the <tt>cygpath</tt> utility to map pathnames with spaces
974 or the backslash character into the <tt>C:/</tt> style of pathname
975 (called 'mixed'), e.g. <tt>cygpath -s -m "<i>path</i>"</tt>.
976 </p>
977 <p>
978 Note that the use of CYGWIN creates a unique problem with regards to
979 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
980 the <tt>PATH</tt> variable contains directories
981 separated with the ";" character (Solaris and Linux use ":").
982 With CYGWIN, it uses ":", but that means that paths like "C:/path"
983 cannot be placed in the CYGWIN version of <tt>PATH</tt> and
984 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
985 which CYGWIN understands, but only CYGWIN understands.
986 </p>
987 <p>
988 If you are using the Cygwin environment, you need to
989 <a href="#buildgmake">compile your own version</a>
990 of GNU make because the default Cygwin make can not handle drive letters in paths.
991 </p>
992 <p>
993 <strong>MinGW/MSYS:</strong>
994 MinGW ("Minimalist GNU for Windows") is a collection of free Windows
995 specific header files and import libraries combined with GNU toolsets that
996 allow one to produce native Windows programs that do not rely on any
997 3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building
998 applications and programs which rely on traditional UNIX tools to
999 be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>.
1000 </p>
1001 <p>
1002 Like Cygwin, MinGW/MSYS can handle different types of path formats. They
1003 are internally converted to paths with forward slashes and drive letters
1004 <tt><drive>:</tt> replaced by a virtual
1005 directory <tt>/<drive></tt>. Additionally, MSYS automatically
1006 detects binaries compiled for the MSYS environment and feeds them with the
1007 internal, Unix-style path names. If native Windows applications are called
1008 from within MSYS programs their path arguments are automatically converted
1009 back to Windows style path names with drive letters and backslashes as
1010 path separators. This may cause problems for Windows applications which
1011 use forward slashes as parameter separator (e.g. <tt>cl /nologo /I</tt>)
1012 because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion">
1013 replace such parameters by drive letters</a>.
1014 </p>
1015 <p>
1016 If you are using the MinGW/MSYS system you can use the default make
1017 version supplied by the environment.
1018 </p>
1019 </blockquote>
1020 <!-- ------------------------------------------------------ -->
1021 <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
1022 <blockquote>
1023 <ol>
1024 <li>
1025 Install one of the
1026 <a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or
1027 <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments.
1028 </li>
1029 <li>
1030 Install the
1031 <a href="#bootjdk">Bootstrap JDK</a>, set
1032 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
1033 </li>
1034 <li>
1035 <a href="#importjdk">Optional Import JDK</a>, set
1036 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
1037 </li>
1038 <li>
1039 Install the
1040 <a href="#msvc32">Microsoft Visual Studio Compilers</a>).
1041 </li>
1042 <li>
1043 Setup all environment variables for compilers
1044 (see <a href="#msvc32">compilers</a>).
1045 </li>
1046 <li>
1047 Install
1048 <a href="#dxsdk">Microsoft DirectX SDK</a>.
1049 </li>
1050 <li>
1051 Install
1052 <a href="#ant">Ant 1.7.1 or newer</a>,
1053 make sure it is in your PATH and set
1054 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
1055 </li>
1056 </ol>
1057 </blockquote>
1058 <!-- ------------------------------------------------------ -->
1059 <hr>
1060 <h3><a name="macosx">Basic Mac OS X System Setup</a></h3>
1061 <blockquote>
1062 <strong>X64 only:</strong>
1063 The minimum recommended hardware for building
1064 the Mac OS X version is any 64-bit capable Intel processor, at least 2
1065 GB of RAM, and approximately 3 GB of free disk space. You should also
1066 have OS X Lion 10.7.3 installed.
1067 </blockquote>
1068 <!-- ------------------------------------------------------ -->
1070 <h4><a name="macosx_checklist">Basic Mac OS X Check List</a></h4>
1071 <blockquote>
1072 <ol>
1073 <li>
1074 Install <a href="https://developer.apple.com/xcode/">XCode 4.1</a> or newer.
1075 If you install XCode 4.3 or newer, make sure you also install
1076 "Command line tools" found under the preferences pane "Downloads".
1077 </li>
1078 <li>
1079 Install <a href="http://support.apple.com/kb/dl1421" target="_blank">"Java for OS X Lion Update 1"</a>,
1080 set <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a> to <code>`/usr/libexec/java_home -v 1.6`</code></tt>
1081 </li>
1082 <li>
1083 <a href="#importjdk">Optional Import JDK</a>, set
1084 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
1085 </li>
1086 </ol>
1087 </blockquote>
1088 <!-- ------------------------------------------------------ -->
1089 <hr>
1090 <h3><a name="dependencies">Build Dependencies</a></h3>
1091 <blockquote>
1092 Depending on the platform, the OpenJDK build process has some basic
1093 dependencies on components not part of the OpenJDK sources.
1094 Some of these are specific to a platform, some even specific to
1095 an architecture.
1096 Each dependency will have a set of ALT variables that can be set
1097 to tell the makefiles where to locate the component.
1098 In most cases setting these ALT variables may not be necessary
1099 and the makefiles will find defaults on the system in standard
1100 install locations or through component specific variables.
1101 <!-- ------------------------------------------------------ -->
1102 <h4><a name="bootjdk">Bootstrap JDK</a></h4>
1103 <blockquote>
1104 All OpenJDK builds require access to the previously released
1105 JDK 6, this is often called a bootstrap JDK.
1106 The JDK 6 binaries can be downloaded from Sun's
1107 <a href="http://java.sun.com/javase/downloads/index.jsp"
1108 target="_blank">JDK 6 download site</a>.
1109 For build performance reasons
1110 is very important that this bootstrap JDK be made available on the
1111 local disk of the machine doing the build.
1112 You should always set
1113 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
1114 to point to the location of
1115 the bootstrap JDK installation, this is the directory pathname
1116 that contains a <tt>bin, lib, and include</tt>
1117 It's also a good idea to also place its <tt>bin</tt> directory
1118 in the <tt>PATH</tt> environment variable, although it's
1119 not required.
1120 <p>
1121 <strong>Solaris:</strong>
1122 Some pre-installed JDK images may be available to you in the
1123 directory <tt>/usr/jdk/instances</tt>.
1124 If you don't set
1125 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
1126 the makefiles will look in that location for a JDK it can use.
1127 </blockquote>
1128 <!-- ------------------------------------------------------ -->
1129 <h4><a name="importjdk">Optional Import JDK</a></h4>
1130 <blockquote>
1131 The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
1132 setting is only needed if you are not building the entire
1133 JDK. For example, if you have built the entire JDK once, and
1134 wanted to avoid repeatedly building the Hotspot VM, you could
1135 set this to the location of the previous JDK install image
1136 and the build will copy the needed files from this import area.
1137 </blockquote>
1138 <!-- ------------------------------------------------------ -->
1139 <h4><a name="ant">Ant</a></h4>
1140 <blockquote>
1141 All OpenJDK builds require access to least Ant 1.7.1.
1142 The Ant tool is available from the
1143 <a href="http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip" target="_blank">
1144 Ant 1.7.1 archive download site</a>.
1145 You should always make sure <tt>ant</tt> is in your PATH, and
1146 on Windows you may also need to set
1147 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
1148 to point to the location of
1149 the Ant installation, this is the directory pathname
1150 that contains a <tt>bin and lib</tt>.
1151 <br>
1152 <b>WARNING:</b> Ant versions used from IDE tools like NetBeans
1153 or installed via system packages may not operate the same
1154 as the one obtained from the Ant download bundles.
1155 These system and IDE installers sometimes choose to change
1156 the ant installation enough to cause differences.
1157 </blockquote>
1158 <!-- ------------------------------------------------------ -->
1159 <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
1160 <blockquote>
1161 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
1162 http://en.wikipedia.org/wiki/Certificate_Authority</a>
1163 for a better understanding of the Certificate Authority (CA).
1164 A certificates file named "cacerts"
1165 represents a system-wide keystore with CA certificates.
1166 In JDK and JRE
1167 binary bundles, the "cacerts" file contains root CA certificates from
1168 several public CAs (e.g., VeriSign, Thawte, and Baltimore).
1169 The source contain a cacerts file
1170 without CA root certificates.
1171 Formal JDK builders will need to secure
1172 permission from each public CA and include the certificates into their
1173 own custom cacerts file.
1174 Failure to provide a populated cacerts file
1175 will result in verification errors of a certificate chain during runtime.
1176 The variable
1177 <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
1178 can be used to override the default location of the
1179 cacerts file that will get placed in your build.
1180 By default an empty cacerts file is provided and that should be
1181 fine for most JDK developers.
1182 </blockquote>
1183 <!-- ------------------------------------------------------ -->
1184 <h4><a name="compilers">Compilers</a></h4>
1185 <blockquote>
1186 <strong><a name="gcc">Linux gcc/binutils</a></strong>
1187 <blockquote>
1188 The GNU gcc compiler version should be 4.3 or newer.
1189 The compiler used should be the default compiler installed
1190 in <tt>/usr/bin</tt>.
1191 </blockquote>
1192 <strong><a name="studio">Solaris: Sun Studio</a></strong>
1193 <blockquote>
1194 At a minimum, the
1195 <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
1196 Sun Studio 12 Update 1 Compilers</a>
1197 (containing version 5.10 of the C and C++ compilers) is required,
1198 including specific patches.
1199 <p>
1200 The Solaris SPARC patch list is:
1201 <ul>
1202 <li>
1203 118683-05: SunOS 5.10: Patch for profiling libraries and assembler
1204 </li>
1205 <li>
1206 119963-21: SunOS 5.10: Shared library patch for C++
1207 </li>
1208 <li>
1209 120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
1210 </li>
1211 <li>
1212 128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
1213 </li>
1214 <li>
1215 141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
1216 </li>
1217 <li>
1218 141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
1219 </li>
1220 <li>
1221 142371-01: Sun Studio 12.1 Update 1: Patch for dbx
1222 </li>
1223 <li>
1224 143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
1225 </li>
1226 <li>
1227 143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
1228 </li>
1229 <li>
1230 142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
1231 </li>
1232 </ul>
1233 <p>
1234 The Solaris X86 patch list is:
1235 <ul>
1236 <li>
1237 119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
1238 </li>
1239 <li>
1240 119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
1241 </li>
1242 <li>
1243 120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
1244 </li>
1245 <li>
1246 141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
1247 </li>
1248 <li>
1249 128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
1250 </li>
1251 <li>
1252 142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
1253 </li>
1254 <li>
1255 142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
1256 </li>
1257 </ul>
1258 <p>
1259 Set
1260 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
1261 to point to the location of
1262 the compiler binaries, and place this location in the <tt>PATH</tt>.
1263 <p>
1264 The Oracle Solaris Studio Express compilers at:
1265 <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
1266 Oracle Solaris Studio Express Download site</a>
1267 are also an option, although these compilers have not
1268 been extensively used yet.
1269 </blockquote>
1270 <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong>
1271 <blockquote>
1272 <p>
1273 <b>BEGIN WARNING</b>: JDK 7 has transitioned to
1274 use the newest VS2010 Microsoft compilers.
1275 No other compilers are known to build the entire JDK,
1276 including non-open portions.
1277 Visual Studio 2010 Express compilers are now able to build all the
1278 open source repositories, but this is 32 bit only. To build 64 bit
1279 Windows binaries use the the 7.1 Windows SDK.
1280 <b>END WARNING.</b>
1281 <p>
1282 The 32-bit OpenJDK Windows build requires
1283 Microsoft Visual Studio C++ 2010 (VS2010) Professional
1284 Edition or Express compiler.
1285 The compiler and other tools are expected to reside
1286 in the location defined by the variable
1287 <tt>VS100COMNTOOLS</tt> which
1288 is set by the Microsoft Visual Studio installer.
1289 <p>
1290 Once the compiler is installed,
1291 it is recommended that you run <tt>VCVARS32.BAT</tt>
1292 to set the compiler environment variables
1293 <tt>INCLUDE</tt>,
1294 <tt>LIB</tt>, and
1295 <tt>PATH</tt>
1296 prior to building the
1297 OpenJDK.
1298 The above environment variables <b>MUST</b> be set.
1299 This compiler also contains the Windows SDK v 7.0a,
1300 which is an update to the Windows 7 SDK.
1301 <p>
1302 <b>WARNING:</b> Make sure you check out the
1303 <a href="#cygwin">CYGWIN link.exe WARNING</a>.
1304 The path <tt>/usr/bin</tt> must be after the path to the
1305 Visual Studio product.
1306 </blockquote>
1307 <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong>
1308 <blockquote>
1309 For <b>X64</b>, the set up is much the same as 32 bit
1310 except that you run <tt>amd64\VCVARS64.BAT</tt>
1311 to set the compiler environment variables.
1312 Previously 64 bit builds had to use the 64 bit compiler in
1313 an unbundled Windows SDK but this is no longer necessary if
1314 you have VS2010 Professional.
1315 </blockquote>
1316 <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong>
1317 For a free alternative for 64 bit builds, use the 7.1 SDK.
1318 Microsoft say that to set up your paths for this run
1319 <pre>
1320 c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64.
1321 </pre>
1322 What was tested is just directly setting up LIB, INCLUDE,
1323 PATH and based on the installation directories using the
1324 DOS short name appropriate for the system, (you will
1325 need to set them for yours, not just blindly copy this) eg :
1326 <pre>
1327 set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0
1328 set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1
1329 set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH%
1330 set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include
1331 set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64
1332 </pre>
1333 <strong><a name="llvmgcc">OS X Lion 10.7.3: LLVM GCC</a></strong>
1334 <blockquote>
1335 LLVM GCC is bundled with XCode. The version should be at least 4.2.1.
1336 </blockquote>
1337 </blockquote>
1338 <!-- ------------------------------------------------------ -->
1339 <h4><a name="zip">Zip and Unzip</a></h4>
1340 <blockquote>
1341 Version 2.2 (November 3rd 1997) or newer of the zip utility
1342 and version 5.12 or newer of the unzip utility is needed
1343 to build the JDK.
1344 With Solaris, Linux, and Windows CYGWIN, the zip and unzip
1345 utilities installed on the system should be fine.
1346 Information and the source code for
1347 ZIP.EXE and UNZIP.EXE is available on the
1348 <a href="http://www.info-zip.org"
1349 target="_blank">info-zip web site</a>.
1350 </blockquote>
1351 <!-- ------------------------------------------------------ -->
1352 <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris & Linux)</a></h4>
1353 <blockquote>
1354 <strong>Solaris:</strong>
1355 CUPS header files are required for building the
1356 OpenJDK on Solaris.
1357 The Solaris header files can be obtained by installing
1358 the package <strong>SFWcups</strong> from the Solaris Software
1359 Companion CD/DVD, these often will be installed into
1360 <tt>/opt/sfw/cups</tt>.
1361 <p>
1362 <strong>Linux:</strong>
1363 CUPS header files are required for building the
1364 OpenJDK on Linux.
1365 The Linux header files are usually available from a "cups"
1366 development package, it's recommended that you try and use
1367 the package provided by the particular version of Linux that
1368 you are using.
1369 <p>
1370 The CUPS header files can always be downloaded from
1371 <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1372 The variable
1373 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1374 can be used to override the default location of the
1375 CUPS Header files.
1376 </blockquote>
1377 <!-- ------------------------------------------------------ -->
1378 <h4><a name="xrender">XRender Extension Headers (Solaris & Linux)</a></h4>
1379 <blockquote>
1380 <p>
1381 <strong>Solaris:</strong>
1382 XRender header files are required for building the
1383 OpenJDK on Solaris.
1384 The XRender header file is included with the other X11 header files
1385 in the package <strong>SFWxwinc</strong> on new enough versions of
1386 Solaris and will be installed in
1387 <tt>/usr/X11/include/X11/extensions/Xrender.h</tt> or
1388 <tt>/usr/openwin/share/include/X11/extensions/Xrender.h</tt>
1389 </p><p>
1390 <strong>Linux:</strong>
1391 XRender header files are required for building the
1392 OpenJDK on Linux.
1393 The Linux header files are usually available from a "Xrender"
1394 development package, it's recommended that you try and use
1395 the package provided by the particular distribution of Linux that
1396 you are using.
1397 </p>
1398 </blockquote>
1399 <!-- ------------------------------------------------------ -->
1400 <h4><a name="freetype">FreeType 2</a></h4>
1401 <blockquote>
1402 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1403 On Unix systems required files can be available as part of your
1404 distribution (while you still may need to upgrade them).
1405 Note that you need development version of package that
1406 includes both FreeType library and header files.
1407 <p>
1408 You can always download latest FreeType version from the
1409 <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
1410 <p>
1411 Makefiles will try to pick FreeType from /usr/lib and /usr/include.
1412 In case it is installed elsewhere you will need to set environment
1413 variables
1414 <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
1415 and
1416 <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
1417 to refer to place where library and header files are installed.
1418 <p>
1419 Building the freetype 2 libraries from scratch is also possible,
1420 however on Windows refer to the
1421 <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
1422 Windows FreeType DLL build instructions</a>.
1423 <p>
1424 Note that by default FreeType is built with byte code hinting
1425 support disabled due to licensing restrictions.
1426 In this case, text appearance and metrics are expected to
1427 differ from Sun's official JDK build.
1428 See
1429 <a href="http://freetype.sourceforge.net/freetype2/index.html">
1430 the SourceForge FreeType2 Home Page
1431 </a>
1432 for more information.
1433 </blockquote>
1434 <!-- ------------------------------------------------------ -->
1435 <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
1436 <blockquote>
1437 <strong>Linux only:</strong>
1438 Version 0.9.1 or newer of the ALSA files are
1439 required for building the OpenJDK on Linux.
1440 These Linux files are usually available from an "alsa"
1441 of "libasound"
1442 development package, it's highly recommended that you try and use
1443 the package provided by the particular version of Linux that
1444 you are using.
1445 The makefiles will check this emit a sanity error if it is
1446 missing or the wrong version.
1447 <p>
1448 In particular, older Linux systems will likely not have the
1449 right version of ALSA installed, for example
1450 Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
1451 recent ALSA distribution.
1452 On rpm-based systems, you can see if ALSA is installed by
1453 running this command:
1454 <pre>
1455 <tt>rpm -qa | grep alsa</tt>
1456 </pre>
1457 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
1458 <p>
1459 If your distribution does not come with ALSA, and you can't
1460 find ALSA packages built for your particular system,
1461 you can try to install the pre-built ALSA rpm packages from
1462 <a href="http://www.freshrpms.net/" target="_blank">
1463 <tt>www.freshrpms.net</tt></a>.
1464 Note that installing a newer ALSA could
1465 break sound output if an older version of ALSA was previously
1466 installed on the system, but it will enable JDK compilation.
1467 <blockquote>
1468 Installation: execute as root<br>
1469 [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
1470 [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
1471 Uninstallation:<br>
1472 [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
1473 [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
1474 Make sure that you do not link to the static library
1475 (<tt>libasound.a</tt>),
1476 by verifying that the dynamic library (<tt>libasound.so</tt>) is
1477 correctly installed in <tt>/usr/lib</tt>.
1478 </blockquote>
1479 As a last resort you can go to the
1480 <a href="http://www.alsa-project.org" target="_blank">
1481 Advanced Linux Sound Architecture Site</a> and build it from
1482 source.
1483 <blockquote>
1484 Download driver and library
1485 source tarballs from
1486 <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>.
1487 As root, execute the following
1488 commands (you may need to adapt the version number):
1489 <pre>
1490 <tt>
1491 $ tar xjf alsa-driver-0.9.1.tar.bz2
1492 $ cd alsa-driver-0.9.1
1493 $ ./configure
1494 $ make install
1495 $ cd ..
1496 $ tar xjf alsa-lib-0.9.1.tar.bz2
1497 $ cd alsa-lib-0.9.1
1498 $ ./configure
1499 $ make install
1500 </tt>
1501 </pre>
1502 Should one of the above steps fail, refer to the documentation on
1503 ALSA's home page.
1504 </blockquote>
1505 Note that this is a minimum install that enables
1506 building the JDK platform. To actually use ALSA sound drivers, more
1507 steps are necessary as outlined in the documentation on ALSA's homepage.
1508 <p>
1509 ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
1510 the <tt>alsa-lib-0.9.1</tt> directory and then in
1511 <tt>alsa-driver-0.9.1</tt>.
1512 </blockquote>
1513 There are no ALT* variables to change the assumed locations of ALSA,
1514 the makefiles will expect to find the ALSA include files and library at:
1515 <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
1516 </blockquote>
1517 <!-- ------------------------------------------------------ -->
1518 <h4>Windows Specific Dependencies</h4>
1519 <blockquote>
1520 <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
1521 <blockquote>
1522 The OpenJDK requires access to a set of unix command tools
1523 on Windows which can be supplied by
1524 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>.
1525 <p>
1526 The OpenJDK build requires CYGWIN version 1.5.12 or newer.
1527 Information about CYGWIN can
1528 be obtained from the CYGWIN website at
1529 <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
1530 <p>
1531 By default CYGWIN doesn't install all the tools required for building
1532 the OpenJDK.
1533 Along with the default installation, you need to install
1534 the following tools.
1535 <blockquote>
1536 <table border="1">
1537 <thead>
1538 <tr>
1539 <td>Binary Name</td>
1540 <td>Category</td>
1541 <td>Package</td>
1542 <td>Description</td>
1543 </tr>
1544 </thead>
1545 <tbody>
1546 <tr>
1547 <td>ar.exe</td>
1548 <td>Devel</td>
1549 <td>binutils</td>
1550 <td>The GNU assembler, linker and binary
1551 utilities</td>
1552 </tr>
1553 <tr>
1554 <td>make.exe</td>
1555 <td>Devel</td>
1556 <td>make</td>
1557 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
1558 <b>NOTE</b>: the Cygwin make can not be used to build the
1559 OpenJDK. You only need it to build your own version of make
1560 (see <a href="#gmake">the GNU make section</a>)</td>
1561 </tr>
1562 <tr>
1563 <td>m4.exe</td>
1564 <td>Interpreters</td>
1565 <td>m4</td>
1566 <td>GNU implementation of the traditional Unix macro
1567 processor</td>
1568 </tr>
1569 <tr>
1570 <td>cpio.exe</td>
1571 <td>Utils</td>
1572 <td>cpio</td>
1573 <td>A program to manage archives of files</td>
1574 </tr>
1575 <tr>
1576 <td>gawk.exe</td>
1577 <td>Utils</td>
1578 <td>awk</td>
1579 <td>Pattern-directed scanning and processing language</td>
1580 </tr>
1581 <tr>
1582 <td>file.exe</td>
1583 <td>Utils</td>
1584 <td>file</td>
1585 <td>Determines file type using 'magic' numbers</td>
1586 </tr>
1587 <tr>
1588 <td>zip.exe</td>
1589 <td>Archive</td>
1590 <td>zip</td>
1591 <td>Package and compress (archive) files</td>
1592 </tr>
1593 <tr>
1594 <td>unzip.exe</td>
1595 <td>Archive</td>
1596 <td>unzip</td>
1597 <td>Extract compressed files in a ZIP archive</td>
1598 </tr>
1599 <tr>
1600 <td>free.exe</td>
1601 <td>System</td>
1602 <td>procps</td>
1603 <td>Display amount of free and used memory in the system</td>
1604 </tr>
1605 </tbody>
1606 </table>
1607 </blockquote>
1608 <p>
1609 Note that the CYGWIN software can conflict with other non-CYGWIN
1610 software on your Windows system.
1611 CYGWIN provides a
1612 <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1613 known issues and problems, of particular interest is the
1614 section on
1615 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1616 BLODA (applications that interfere with CYGWIN)</a>.
1617 <p>
1618 <b>WARNING:</b>
1619 Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1620 with the Visual Studio version. You need the Visual Studio
1621 version of <tt>link.exe</tt>, not the CYGWIN one.
1622 So it's important that the Visual Studio paths in PATH preceed
1623 the CYGWIN path <tt>/usr/bin</tt>.
1624 </blockquote>
1625 <strong> Minimalist GNU for Windows (<a name="msys">MinGW/MSYS</a>)</strong>
1626 <blockquote>
1627 Alternatively, the set of unix command tools for the OpenJDK build on
1628 Windows can be supplied by
1629 <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>.
1630 <p>
1631 In addition to the tools which will be installed by default, you have
1632 to manually install the <tt>msys-zip</tt> and <tt>msys-unzip</tt> packages.
1633 This can be easily done with the MinGW command line installer:<br/>
1634 <tt><br/>
1635 mingw-get.exe install msys-zip<br/>
1636 mingw-get.exe install msys-unzip<br/>
1637 </tt>
1638 </p>
1639 </blockquote>
1640 <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
1641 <blockquote>
1642 Microsoft DirectX 9.0 SDK (Summer 2004)
1643 headers are required for building
1644 OpenJDK.
1645 This SDK can be downloaded from
1646 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&displaylang=en" target="_blank">
1647 Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
1648 If the link above becomes obsolete, the SDK can be found from
1649 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1650 (search with "DirectX 9.0 SDK Update Summer 2004").
1651 The location of this SDK can be set with
1652 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1653 but it's normally found via the DirectX environment variable
1654 <tt>DXSDK_DIR</tt>.
1655 </blockquote>
1656 <strong><a name="msvcrNN"><tt>MSVCR100.DLL</tt></a></strong>
1657 <blockquote>
1658 The OpenJDK build requires access to a redistributable
1659 <tt>MSVCR100.DLL</tt>.
1660 This is usually picked up automatically from the redist
1661 directories of Visual Studio 2010.
1662 If this cannot be found set the
1663 <a href="#ALT_MSVCRNN_DLL_PATH"><tt>ALT_MSVCRNN_DLL_PATH</tt></a>
1664 variable to the location of this file.
1665 <p>
1666 </blockquote>
1667 </blockquote>
1668 <!-- ------------------------------------------------------ -->
1669 <hr>
1670 <h2><a name="creating">Creating the Build</a></h2>
1671 <blockquote>
1672 Once a machine is setup to build the OpenJDK,
1673 the steps to create the build are fairly simple.
1674 The various ALT settings can either be made into variables
1675 or can be supplied on the
1676 <a href="#gmake"><tt><i>gmake</i></tt></a>
1677 command.
1678 <ol>
1679 <li>Use the sanity rule to double check all the ALT settings:
1680 <blockquote>
1681 <tt>
1682 <i>gmake</i>
1683 sanity
1684 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1685 [other "ALT_" overrides]
1686 </tt>
1687 </blockquote>
1688 </li>
1689 <li>Start the build with the command:
1690 <blockquote>
1691 <tt>
1692 <i>gmake</i>
1693 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1694 [ALT_OUTPUTDIR=<i>output_directory</i>]
1695 [other "ALT_" overrides]
1696 </tt>
1697 </blockquote>
1698 </li>
1699 </ol>
1700 <p>
1701 <strong>Solaris:</strong>
1702 Note that ARCH_DATA_MODEL is really only needed on Solaris to
1703 indicate you want to built the 64-bit version.
1704 And before the Solaris 64-bit binaries can be used, they
1705 must be merged with the binaries from a separate 32-bit build.
1706 The merged binaries may then be used in either 32-bit or 64-bit mode, with
1707 the selection occurring at runtime
1708 with the <tt>-d32</tt> or <tt>-d64</tt> options.
1709 </blockquote>
1710 <!-- ------------------------------------------------------ -->
1711 <hr>
1712 <h2><a name="testing">Testing the Build</a></h2>
1713 <blockquote>
1714 When the build is completed, you should see the generated
1715 binaries and associated files in the <tt>j2sdk-image</tt>
1716 directory in the output directory.
1717 The default output directory is
1718 <tt>build/<i>platform</i></tt>,
1719 where <tt><i>platform</i></tt> is one of
1720 <blockquote>
1721 <ul>
1722 <li><tt>solaris-sparc</tt></li>
1723 <li><tt>solaris-sparcv9</tt></li>
1724 <li><tt>solaris-i586</tt></li>
1725 <li><tt>solaris-amd64</tt></li>
1726 <li><tt>linux-i586</tt></li>
1727 <li><tt>linux-amd64</tt></li>
1728 <li><tt>windows-i586</tt></li>
1729 <li><tt>windows-amd64</tt></li>
1730 </ul>
1731 </blockquote>
1732 In particular, the
1733 <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
1734 directory should contain executables for the
1735 OpenJDK tools and utilities.
1736 <p>
1737 You can test that the build completed properly by using the build
1738 to run the various demos that you will find in the
1739 <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
1740 directory.
1741 <p>
1742 The provided regression tests can be run with the <tt>jtreg</tt>
1743 utility from
1744 <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
1745 </blockquote>
1746 <!-- ------------------------------------------------------ -->
1747 <hr>
1748 <h2><a name="variables">Environment/Make Variables</a></h2>
1749 <p>
1750 Some of the
1751 environment or make variables (just called <b>variables</b> in this
1752 document) that can impact the build are:
1753 <blockquote>
1754 <dl>
1755 <dt><a name="path"><tt>PATH</tt></a> </dt>
1756 <dd>Typically you want to set the <tt>PATH</tt> to include:
1757 <ul>
1758 <li>The location of the GNU make binary</li>
1759 <li>The location of the Bootstrap JDK <tt>java</tt>
1760 (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
1761 <li>The location of the C/C++ compilers
1762 (see <a href="#compilers"><tt>compilers</tt></a>)</li>
1763 <li>The location or locations for the Unix command utilities
1764 (e.g. <tt>/usr/bin</tt>)</li>
1765 </ul>
1766 </dd>
1767 <dt><tt>MILESTONE</tt> </dt>
1768 <dd>
1769 The milestone name for the build (<i>e.g.</i>"beta").
1770 The default value is "internal".
1771 </dd>
1772 <dt><tt>BUILD_NUMBER</tt> </dt>
1773 <dd>
1774 The build number for the build (<i>e.g.</i> "b27").
1775 The default value is "b00".
1776 </dd>
1777 <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
1778 <dd>The <tt>ARCH_DATA_MODEL</tt> variable
1779 is used to specify whether the build is to generate 32-bit or 64-bit
1780 binaries.
1781 The Solaris build supports either 32-bit or 64-bit builds, but
1782 Windows and Linux will support only one, depending on the specific
1783 OS being used.
1784 Normally, setting this variable is only necessary on Solaris.
1785 Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
1786 or to <tt>64</tt> for generating 64-bit binaries.
1787 </dd>
1788 <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
1789 <dd>
1790 The location of the bootstrap JDK installation.
1791 See <a href="#bootjdk">Bootstrap JDK</a> for more information.
1792 You should always install your own local Bootstrap JDK and
1793 always set <tt>ALT_BOOTDIR</tt> explicitly.
1794 </dd>
1795 <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
1796 <dd>
1797 The location of a previously built JDK installation.
1798 See <a href="#importjdk">Optional Import JDK</a> for more information.
1799 </dd>
1800 <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
1801 <dd>
1802 An override for specifying the (absolute) path of where the
1803 build output is to go.
1804 The default output directory will be build/<i>platform</i>.
1805 </dd>
1806 <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
1807 <dd>
1808 The location of the C/C++ compiler.
1809 The default varies depending on the platform.
1810 </dd>
1811 <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
1812 <dd>
1813 The location of the <a href="#cacerts">cacerts</a> file.
1814 The default will refer to
1815 <tt>jdk/src/share/lib/security/cacerts</tt>.
1816 </dd>
1817 <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
1818 <dd>
1819 The location of the CUPS header files.
1820 See <a href="#cups">CUPS information</a> for more information.
1821 If this path does not exist the fallback path is
1822 <tt>/usr/include</tt>.
1823 </dd>
1824 <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
1825 <dd>
1826 The location of the FreeType shared library.
1827 See <a href="#freetype">FreeType information</a> for details.
1828 </dd>
1829 <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
1830 <dd>
1831 The location of the FreeType header files.
1832 See <a href="#freetype">FreeType information</a> for details.
1833 </dd>
1834 <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
1835 <dd>
1836 The default root location of the devtools.
1837 The default value is
1838 <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
1839 </dd>
1840 <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
1841 <dd>
1842 The location of tools like the
1843 <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
1844 binaries, but might also contain the GNU make utility
1845 (<tt><i>gmake</i></tt>).
1846 So this area is a bit of a grab bag, especially on Windows.
1847 The default value depends on the platform and
1848 Unix Commands being used.
1849 On Linux the default will be
1850 <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>,
1851 on Solaris
1852 <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>,
1853 and on Windows with CYGWIN
1854 <tt>/usr/bin</tt>.
1855 </dd>
1856 <dt><tt><a name="ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> </dt>
1857 <dd>
1858 The location of any source drop bundles
1859 (see <a href="#drops">Managing the Source Drops</a>).
1860 The default will be
1861 <tt>$(ALT_JDK_DEVTOOLS_PATH)/share/jdk8-drops</tt>.
1862 </dd>
1863 <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
1864 <dd>
1865 <strong>Solaris only:</strong>
1866 An override for specifying where the Unix CCS
1867 command set are located.
1868 The default location is <tt>/usr/ccs/bin</tt>
1869 </dd>
1870 <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
1871 <dd>
1872 The default root location for many of the ALT path locations
1873 of the following ALT variables.
1874 The default value is
1875 <tt>"/java"</tt> on Solaris and Linux,
1876 <tt>"J:"</tt> on Windows.
1877 </dd>
1878 <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
1879 <dd>
1880 These are useful in managing builds on multiple platforms.
1881 The default network location for all of the import JDK images
1882 for all platforms.
1883 If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
1884 is not set, this directory will be used and should contain
1885 the following directories:
1886 <tt>solaris-sparc</tt>,
1887 <tt>solaris-i586</tt>,
1888 <tt>solaris-sparcv9</tt>,
1889 <tt>solaris-amd64</tt>,
1890 <tt>linux-i586</tt>,
1891 <tt>linux-amd64</tt>,
1892 <tt>windows-i586</tt>,
1893 and
1894 <tt>windows-amd64</tt>.
1895 Where each of these directories contain the import JDK image
1896 for that platform.
1897 </dd>
1898 <dt><a name="ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a></dt>
1899 <dd>
1900 The top-level directory of the libraries and include files for the platform's
1901 graphical programming environment. The default location is platform specific.
1902 For example, on Linux it defaults to <tt>/usr/X11R6/</tt>.
1903 </dd>
1904 <dt><strong>Windows specific:</strong></dt>
1905 <dd>
1906 <dl>
1907 <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt>
1908 <dd>
1909 The location of the
1910 Microsoft Windows SDK where some tools will be
1911 located.
1912 The default is whatever WINDOWSSDKDIR is set to
1913 (or WindowsSdkDir) or the path
1914 <br>
1915 <tt>c:\Program Files\Microsoft SDKs\Windows\v7.0a</tt>
1916 </dd>
1917 <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
1918 <dd>
1919 The location of the
1920 <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
1921 The default will be to try and use the DirectX environment
1922 variable <tt>DXSDK_DIR</tt>,
1923 failing that, look in <tt>C:/DXSDK</tt>.
1924 </dd>
1925 <dt><tt><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt>
1926 <dd>
1927 The location of the
1928 <a href="#msvcrNN"><tt>MSVCR100.DLL</tt></a>.
1929 </dd>
1930 </dl>
1931 </dd>
1932 <dt><strong>Cross-Compilation Support:</strong></dt>
1933 <dd>
1934 <dl>
1935 <dt><a name="CROSS_COMPILE_ARCH"><tt>CROSS_COMPILE_ARCH</tt></a> </dt>
1936 <dd>
1937 Set to the target architecture of a cross-compilation build. If set, this
1938 variable is used to signify that we are cross-compiling. The expectation
1939 is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set
1940 to point to the cross-compiler and that any cross-compilation specific flags
1941 are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>.
1942 The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should
1943 also be set to point to the graphical header files (e.g. X11) provided with
1944 the cross-compiler.
1945 When cross-compiling we skip execution of any demos etc that may be built, and
1946 also skip binary-file verification.
1947 </dd>
1948 <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt>
1949 <dd>
1950 Used to pass cross-compilation options to the cross-compiler.
1951 These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables.
1952 </dd>
1953 <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt>
1954 <dd>
1955 Used primarily for cross-compilation builds (and always set in that case)
1956 this variable indicates that tools from the boot JDK should be used during
1957 the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>)
1958 just built (which can't execute on the build host).
1959 </dd>
1960 <dt><tt><a name="HOST_CC">HOST_CC</a></tt> </dt>
1961 <dd>
1962 The location of the C compiler to generate programs to run on the build host.
1963 Some parts of the build generate programs that are then compiled and executed
1964 to produce other parts of the build. Normally the primary C compiler is used
1965 to do this, but when cross-compiling that would be the cross-compiler and the
1966 resulting program could not be executed.
1967 On Linux this defaults to <tt>/usr/bin/gcc</tt>; on other platforms it must be
1968 set explicitly.
1969 </dd>
1970 </dl>
1971 <dt><strong>Specialized Build Options:</strong></dt>
1972 <dd>
1973 Some build variables exist to support specialized build environments and/or specialized
1974 build products. Their use is only supported in those contexts:
1975 <dl>
1976 <dt><tt><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></tt> </dt>
1977 <dd>
1978 Indicates this build will only contain the Hotspot client VM. In addition to
1979 controlling the Hotspot build target, it ensures that we don't try to copy
1980 any server VM files/directories, and defines a default <tt>jvm.cfg</tt> file
1981 suitable for a client-only environment. Using this in a 64-bit build will
1982 generate a sanity warning as 64-bit client builds are not directly supported.
1983 </dd>
1984 <dt><tt><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</tt> </dt>
1985 <dd>
1986 Used when the build environment has no graphical capabilities at all. This
1987 excludes building anything that requires graphical libraries to be available.
1988 </dd>
1989 <dt><tt><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</tt> </dt>
1990 <dd>
1991 Used to indicate this is a build of the Oracle Java SE Embedded product.
1992 This will enable the directives included in the SE-Embedded specific build
1993 files.
1994 </dd>
1995 <dt><tt><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></tt> </dt>
1996 <dd>
1997 If set to false, disables the use of mmap by the zip utility. Otherwise,
1998 mmap will be used.
1999 </dd>
2000 <dt><tt><a name="COMPRESS_JARS"></a>COMPRESS_JARS</tt> </dt>
2001 <dd>
2002 If set to true, causes certain jar files that would otherwise be built without
2003 compression, to use compression.
2004 </dd>
2005 </dl>
2006 </dd>
2007 </dl>
2008 </blockquote>
2009 <!-- ------------------------------------------------------ -->
2010 <hr>
2011 <h2><a name="hints">Hints and Tips</a></h2>
2012 <blockquote>
2013 You don't have to use all these hints and tips, and in fact people do actually
2014 build with systems that contradict these, but they might prove to be
2015 helpful to some.
2016 <ul>
2017 <li>
2018 If <tt>make sanity</tt> does not work, find out why, fix that
2019 before going any further. Or at least understand what the
2020 complaints are from it.
2021 </li>
2022 <li>
2023 JDK: Keep in mind that you are building a JDK, but you need
2024 a JDK (BOOTDIR JDK) to build this JDK.
2025 </li>
2026 <li>
2027 Ant: The ant utility is a java application and besides having
2028 ant available to you, it's important that ant finds the right
2029 java to run with. Make sure you can type <tt>ant -version</tt>
2030 and get clean results with no error messages.
2031 </li>
2032 <li>
2033 Linux: Try and favor the system packages over building your own
2034 or getting packages from other areas.
2035 Most Linux builds should be possible with the system's
2036 available packages.
2037 </li>
2038 <li>
2039 Solaris: Typically you will need to get compilers on your systems
2040 and occasionally GNU make 3.81 if a gmake binary is not available.
2041 The gmake binary might not be 3.81, be careful.
2042 </li>
2043 <li>
2044 Windows VS2010:
2045 <ul>
2046 <li>
2047 Only the C++ part of VS2010 is needed.
2048 Try to let the installation go to the default install directory.
2049 Always reboot your system after installing VS2010.
2050 The system environment variable VS100COMNTOOLS should be
2051 set in your environment.
2052 </li>
2053 <li>
2054 Make sure that TMP and TEMP are also set in the environment
2055 and refer to Windows paths that exist, like <tt>C:\temp</tt>,
2056 not <tt>/tmp</tt>, not <tt>/cygdrive/c/temp</tt>, and not <tt>C:/temp</tt>.
2057 <tt>C:\temp</tt> is just an example, it is assumed that this area is
2058 private to the user, so by default after installs you should
2059 see a unique user path in these variables.
2060 </li>
2061 <li>
2062 You need to use vsvars32.bat or vsvars64.bat to get the
2063 PATH, INCLUDE, LIB, LIBPATH, and WINDOWSSDKDIR
2064 variables set in your shell environment.
2065 These bat files are not easy to use from a shell environment.
2066 However, there is a script placed in the root jdk8 repository called
2067 vsvars.sh that can help, it should only be done once in a shell
2068 that will be doing the build, e.g.<br>
2069 <tt>sh ./make/scripts/vsvars.sh -v10 > settings<br>
2070 eval `cat settings`</tt><br>
2071 Or just <tt>eval `sh ./make/scripts/vsvars.sh -v10`</tt>.
2072 </li>
2073 </ul>
2074 </li>
2075 <li>
2076 Windows: PATH order is critical, see the
2077 <a href="#paths">paths</a> section for more information.
2078 </li>
2079 <li>
2080 Windows 64bit builds: Use ARCH_DATA_MODEL=64.
2081 </li>
2082 </ul>
2083 </blockquote>
2084 <!-- ------------------------------------------------------ -->
2085 <hr>
2086 <h2><a name="troubleshooting">Troubleshooting</a></h2>
2087 <blockquote>
2088 A build can fail for any number of reasons.
2089 Most failures
2090 are a result of trying to build in an environment in which all the
2091 pre-build requirements have not been met.
2092 The first step in
2093 troubleshooting a build failure is to recheck that you have satisfied
2094 all the pre-build requirements for your platform.
2095 Look for the check list of the platform you are building on in the
2096 <a href="#contents">Table of Contents</a>.
2097 <p>
2098 You can validate your build environment by using the <tt>sanity</tt>
2099 target.
2100 Any errors listed
2101 will stop the build from starting, and any warnings may result in
2102 a flawed product build.
2103 We strongly encourage you to evaluate every
2104 sanity check warning and fix it if required, before you proceed
2105 further with your build.
2106 <p>
2107 Some of the more common problems with builds are briefly described
2108 below, with suggestions for remedies.
2109 <ul>
2110 <li>
2111 <b>Corrupted Bundles on Windows:</b>
2112 <blockquote>
2113 Some virus scanning software has been known to corrupt the
2114 downloading of zip bundles.
2115 It may be necessary to disable the 'on access' or 'real time'
2116 virus scanning features to prevent this corruption.
2117 This type of "real time" virus scanning can also slow down the
2118 build process significantly.
2119 Temporarily disabling the feature, or excluding the build
2120 output directory may be necessary to get correct and faster builds.
2121 </blockquote>
2122 </li>
2123 <li>
2124 <b>Slow Builds:</b>
2125 <blockquote>
2126 If your build machine seems to be overloaded from too many
2127 simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
2128 variable to <tt>1</tt> (if you're using a multiple CPU
2129 machine, setting it to more than the the number of CPUs is probably
2130 not a good idea).
2131 <p>
2132 Creating the javadocs can be very slow, if you are running
2133 javadoc, consider skipping that step.
2134 <p>
2135 Faster hardware and more RAM always helps too.
2136 The VM build tends to be CPU intensive (many C++ compiles),
2137 and the rest of the JDK will often be disk intensive.
2138 <p>
2139 Faster compiles are possible using a tool called
2140 <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
2141 </blockquote>
2142 </li>
2143 <li>
2144 <b>File time issues:</b>
2145 <blockquote>
2146 If you see warnings that refer to file time stamps, e.g.
2147 <blockquote>
2148 <i>Warning message:</i><tt> File `xxx' has modification time in
2149 the future.</tt>
2150 <br>
2151 <i>Warning message:</i> <tt> Clock skew detected. Your build may
2152 be incomplete.</tt>
2153 </blockquote>
2154 These warnings can occur when the clock on the build machine is out of
2155 sync with the timestamps on the source files. Other errors, apparently
2156 unrelated but in fact caused by the clock skew, can occur along with
2157 the clock skew warnings. These secondary errors may tend to obscure the
2158 fact that the true root cause of the problem is an out-of-sync clock.
2159 For example, an out-of-sync clock has been known to cause an old
2160 version of javac to be used to compile some files, resulting in errors
2161 when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
2162 in the 1.4 source code.
2163 <p>
2164 If you see these warnings, reset the clock on the build
2165 machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
2166 containing the build output, and restart the build from the beginning.
2167 </blockquote>
2168 </li>
2169 <li>
2170 <b>Error message: <tt>Trouble writing out table to disk</tt></b>
2171 <blockquote>
2172 Increase the amount of swap space on your build machine.
2173 </blockquote>
2174 </li>
2175 <li>
2176 <b>Error Message: <tt>libstdc++ not found:</tt></b>
2177 <blockquote>
2178 This is caused by a missing libstdc++.a library.
2179 This is installed as part of a specific package
2180 (e.g. libstdc++.so.devel.386).
2181 By default some 64-bit Linux versions (e.g. Fedora)
2182 only install the 64-bit version of the libstdc++ package.
2183 Various parts of the JDK build require a static
2184 link of the C++ runtime libraries to allow for maximum
2185 portability of the built images.
2186 </blockquote>
2187 </li>
2188 <li>
2189 <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
2190 <blockquote>
2191 This is probably an issue with SELinux (See
2192 <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
2193 http://en.wikipedia.org/wiki/SELinux</a>).
2194 Parts of the VM is built without the <tt>-fPIC</tt> for
2195 performance reasons.
2196 <p>
2197 To completely disable SELinux:
2198 <ol>
2199 <li><tt>$ su root</tt></li>
2200 <li><tt># system-config-securitylevel</tt></li>
2201 <li><tt>In the window that appears, select the SELinux tab</tt></li>
2202 <li><tt>Disable SELinux</tt></li>
2203 </ol>
2204 <p>
2205 Alternatively, instead of completely disabling it you could
2206 disable just this one check.
2207 <ol>
2208 <li>Select System->Administration->SELinux Management</li>
2209 <li>In the SELinux Management Tool which appears,
2210 select "Boolean" from the menu on the left</li>
2211 <li>Expand the "Memory Protection" group</li>
2212 <li>Check the first item, labeled
2213 "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
2214 </ol>
2215 </blockquote>
2216 </li>
2217 <li>
2218 <b>Windows Error Messages:</b><br>
2219 <tt>*** fatal error - couldn't allocate heap, ... </tt><br>
2220 <tt>rm fails with "Directory not empty"</tt><br>
2221 <tt>unzip fails with "cannot create ... Permission denied"</tt><br>
2222 <tt>unzip fails with "cannot create ... Error 50"</tt><br>
2223 <blockquote>
2224 The CYGWIN software can conflict with other non-CYGWIN
2225 software. See the CYGWIN FAQ section on
2226 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
2227 BLODA (applications that interfere with CYGWIN)</a>.
2228 </blockquote>
2229 </li>
2230 <li>
2231 <b>Windows Error Message: <tt>spawn failed</tt></b>
2232 <blockquote>
2233 Try rebooting the system, or there could be some kind of
2234 issue with the disk or disk partition being used.
2235 Sometimes it comes with a "Permission Denied" message.
2236 </blockquote>
2237 </li>
2238 </ul>
2239 </blockquote>
2240 <!-- ------------------------------------------------------ -->
2241 <hr>
2242 <h2><a name="newbuild">The New Build</a></h2>
2243 <blockquote>
2244 The <a href="http://openjdk.java.net/projects/build-infra/">
2245 Build Infrastructure project</a> is working on a new
2246 build. For information on how to try it out, please see the
2247 <a href="http://openjdk.java.net/projects/build-infra/guide.html">
2248 Build Infra User Guide</a>
2249 </blockquote>
2250 <hr>
2251 </body>
2252 </html>