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