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