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