Fri, 18 Sep 2009 09:39:45 -0700
Merge
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <title>OpenJDK Build README</title>
5 </head>
6 <body style="background-color:lightcyan">
7 <!-- ====================================================== -->
8 <table width="100%">
9 <tr>
10 <td align="center">
11 <img alt="OpenJDK"
12 src="http://openjdk.java.net/images/openjdk.png"
13 width=256 />
14 </td>
15 </tr>
16 <tr>
17 <td align=center>
18 <h1>OpenJDK Build README</h1>
19 </td>
20 </tr>
21 </table>
22 <!-- ------------------------------------------------------ -->
23 <hr>
24 <h2><a name="introduction">Introduction</a></h2>
25 <blockquote>
26 <p>
27 This README file contains build instructions for the
28 <a href="http://openjdk.java.net" target="_blank">OpenJDK</a>.
29 Building the source code for the
30 OpenJDK
31 requires
32 a certain degree of technical expertise.
33 </blockquote>
34 <!-- ------------------------------------------------------ -->
35 <hr>
36 <h2><a name="contents">Contents</a></h2>
37 <blockquote>
38 <ul>
39 <li><a href="#introduction">Introduction</a></li>
40 <li><a href="#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>Linux and Solaris:
72 <ul>
73 <li><a href="#cups">CUPS Include files</a> </li>
74 <li><a href="#xrender">XRender 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
600 <a href="#ant">Ant</a>,
601 make sure it is in your PATH.
602 </li>
603 </ol>
604 </blockquote>
605 <!-- ------------------------------------------------------ -->
606 <hr>
607 <h3><a name="solaris">Basic Solaris System Setup</a></h3>
608 <blockquote>
609 The minimum recommended hardware for building the
610 Solaris SPARC version is an UltraSPARC with 512 MB of RAM.
611 For building
612 the Solaris x86 version, a Pentium class processor or better and at
613 least 512 MB of RAM are recommended.
614 Approximately 1.4 GB of free disk
615 space is needed for a 32-bit build.
616 <p>
617 If you are building the 64-bit version, you should
618 run the command "isainfo -v" to verify that you have a
619 64-bit installation, it should say <tt>sparcv9</tt> or
620 <tt>amd64</tt>.
621 An additional 7 GB of free disk space is needed
622 for a 64-bit build.
623 <p>
624 The build uses the tools contained in <tt>/usr/ccs/bin</tt>
625 and <tt>/usr/bin</tt> of a standard developer or full installation of
626 the Solaris operating environment.
627 <p>
628 Solaris patches specific to the JDK can be downloaded from the
629 <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
630 SunSolve JDK Solaris patches download page</a>.
631 You should ensure that the latest patch cluster for
632 your version of the Solaris operating environment has also
633 been installed.
634 </blockquote>
635 <!-- ------------------------------------------------------ -->
636 <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
637 <blockquote>
638 <ol>
639 <li>
640 Install the
641 <a href="#bootjdk">Bootstrap JDK</a>, set
642 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
643 </li>
644 <li>
645 Install the
646 <a href="#binaryplugs">Binary Plugs</a>, set
647 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
648 </li>
649 <li>
650 <a href="#importjdk">Optional Import JDK</a>, set
651 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
652 </li>
653 <li>
654 Install the
655 <a href="#studio">Sun Studio Compilers</a>, set
656 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
657 </li>
658 <li>
659 Install the
660 <a href="#cups">CUPS Include files</a>, set
661 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
662 </li>
663 <li>
664 Install the <a href="#xrender">XRender Include files</a>.
665 </li>
666 <li>
667 Install
668 <a href="#ant">Ant</a>,
669 make sure it is in your PATH.
670 </li>
671 </ol>
672 </blockquote>
673 <!-- ------------------------------------------------------ -->
674 <hr>
675 <h3><a name="windows">Basic Windows System Setup</a></h3>
676 <blockquote>
677 <strong>i586 only:</strong>
678 The minimum recommended hardware for building the 32-bit or X86
679 Windows version is an Pentium class processor or better, at least
680 512 MB of RAM, and approximately 600 MB of free disk space.
681 <strong>
682 NOTE: The Windows build machines need to use the
683 file system NTFS.
684 Build machines formatted to FAT32 will not work
685 because FAT32 doesn't support case-sensitivity in file names.
686 </strong>
687 <p>
688 <strong>X64 only:</strong>
689 The minimum recommended hardware for building
690 the Windows X64 version is an AMD Opteron class processor, at least 1
691 GB of RAM, and approximately 10 GB of free disk space.
692 </blockquote>
693 <!-- ------------------------------------------------------ -->
694 <h4><a name="paths">Windows Paths</a></h4>
695 <blockquote>
696 <strong>Windows:</strong>
697 Note that GNU make is a historic utility and is based very
698 heavily on shell scripting, so it does not tolerate the Windows habit
699 of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
700 Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
701 there is always a 'short' pathname without spaces for any path that
702 contains spaces.
703 Unfortunately, this short pathname can be somewhat dynamic and the
704 formula is difficult to explain.
705 You can use <tt>cygpath</tt> utility to map pathnames with spaces
706 or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
707 (called 'mixed'), e.g.
708 <tt>cygpath -s -m "<i>path</i>"</tt>.
709 <p>
710 The makefiles will try to translate any pathnames supplied
711 to it into the <tt>C:/</tt> style automatically.
712 <p>
713 Note that use of CYGWIN creates a unique problem with regards to
714 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
715 the <tt>PATH</tt> variable contains directories
716 separated with the ";" character (Solaris and Linux uses ":").
717 With CYGWIN, it uses ":", but that means that paths like "C:/path"
718 cannot be placed in the CYGWIN version of <tt>PATH</tt> and
719 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
720 which CYGWIN understands, but only CYGWIN understands.
721 So be careful with paths on Windows.
722 </blockquote>
723 <!-- ------------------------------------------------------ -->
724 <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
725 <blockquote>
726 <ol>
727 <li>
728 Install the
729 <a href="#cygwin">CYGWIN product</a>.
730 </li>
731 <li>
732 Install the
733 <a href="#bootjdk">Bootstrap JDK</a>, set
734 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
735 </li>
736 <li>
737 Install the
738 <a href="#binaryplugs">Binary Plugs</a>, set
739 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
740 </li>
741 <li>
742 <a href="#importjdk">Optional Import JDK</a>, set
743 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
744 </li>
745 <li>
746 Install the
747 <a href="#msvc">Microsoft Visual Studio Compilers</a> (32-bit).
748 </li>
749 <li>
750 Install the
751 <a href="#mssdk">Microsoft Platform SDK</a>.
752 </li>
753 <li>
754 Setup all environment variables for compilers
755 (see <a href="#msvc">compilers</a>).
756 </li>
757 <li>
758 Install
759 <a href="#dxsdk">Microsoft DirectX SDK</a>.
760 </li>
761 <li>
762 Install
763 <a href="#ant">Ant</a>,
764 make sure it is in your PATH and set
765 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
766 </li>
767 </ol>
768 </blockquote>
769 <!-- ------------------------------------------------------ -->
770 <hr>
771 <h3><a name="dependencies">Build Dependencies</a></h3>
772 <blockquote>
773 Depending on the platform, the OpenJDK build process has some basic
774 dependencies on components not part of the OpenJDK sources.
775 Some of these are specific to a platform, some even specific to
776 an architecture.
777 Each dependency will have a set of ALT variables that can be set
778 to tell the makefiles where to locate the component.
779 In most cases setting these ALT variables may not be necessary
780 and the makefiles will find defaults on the system in standard
781 install locations or through component specific variables.
782 <!-- ------------------------------------------------------ -->
783 <h4><a name="bootjdk">Bootstrap JDK</a></h4>
784 <blockquote>
785 All OpenJDK builds require access to the previously released
786 JDK 6, this is often called a bootstrap JDK.
787 The JDK 6 binaries can be downloaded from Sun's
788 <a href="http://java.sun.com/javase/1.6.0/download.html" target="_blank">JDK 6 download site</a>.
789 For build performance reasons
790 is very important that this bootstrap JDK be made available on the
791 local disk of the machine doing the build.
792 You should always set
793 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
794 to point to the location of
795 the bootstrap JDK installation, this is the directory pathname
796 that contains a <tt>bin, lib, and include</tt>
797 It's also a good idea to also place its <tt>bin</tt> directory
798 in the <tt>PATH</tt> environment variable, although it's
799 not required.
800 <p>
801 <strong>Solaris:</strong>
802 Some pre-installed JDK images may be available to you in the
803 directory <tt>/usr/jdk/instances</tt>.
804 If you don't set
805 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
806 the makefiles will look in that location for a JDK it can use.
807 </blockquote>
808 <!-- ------------------------------------------------------ -->
809 <h4><a name="binaryplugs">Binary Plugs</a></h4>
810 <blockquote>
811 Not all of the source code that makes up the JDK is available
812 under an open-source license.
813 This is a temporary situation and these binary plugs will be
814 replaced with fully open source replacements as soon as possible.
815 So currently, in order to build a complete OpenJDK image,
816 you must first download and install the appropriate
817 binary plug bundles for the OpenJDK, go to the
818 <a href="http://openjdk.java.net" target="_blank">OpenJDK</a> site and select
819 the
820 "<b>Bundles(7)</b>"
821 link and download the binaryplugs for
822 your particular platform.
823 The file downloaded is a jar file that must be extracted by running
824 the jar file with:
825 <blockquote>
826 <pre>
827 <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>
828 </pre>
829 </blockquote>
830 A prompt will be issued for acceptance of these binary plug files.
831 During the OpenJDK build process these "binary plugs"
832 for the encumbered components will be copied into your
833 resulting OpenJDK binary build image.
834 These binary plug files are only for the purpose of
835 building an OpenJDK binary.
836 Make sure you set
837 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
838 to the root of this installation.
839 </blockquote>
840 <!-- ------------------------------------------------------ -->
841 <h4><a name="importjdk">Optional Import JDK</a></h4>
842 <blockquote>
843 The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
844 setting is only needed if you are not building the entire
845 JDK. For example, if you have built the entire JDK once, and
846 wanted to avoid repeatedly building the Hotspot VM, you could
847 set this to the location of the previous JDK install image
848 and the build will copy the needed files from this import area.
849 </blockquote>
850 <!-- ------------------------------------------------------ -->
851 <h4><a name="ant">Ant</a></h4>
852 <blockquote>
853 All OpenJDK builds require access to least Ant 1.6.5.
854 The Ant tool is available from the
855 <a href="http://ant.apache.org" target="_blank">
856 Ant download site</a>.
857 You should always make sure <tt>ant</tt> is in your PATH, and
858 on Windows you may also need to set
859 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
860 to point to the location of
861 the Ant installation, this is the directory pathname
862 that contains a <tt>bin and lib</tt>.
863 </blockquote>
864 <!-- ------------------------------------------------------ -->
865 <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
866 <blockquote>
867 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
868 http://en.wikipedia.org/wiki/Certificate_Authority</a>
869 for a better understanding of the Certificate Authority (CA).
870 A certificates file named "cacerts"
871 represents a system-wide keystore with CA certificates.
872 In JDK and JRE
873 binary bundles, the "cacerts" file contains root CA certificates from
874 several public CAs (e.g., VeriSign, Thawte, and Baltimore).
875 The source contain a cacerts file
876 without CA root certificates.
877 Formal JDK builders will need to secure
878 permission from each public CA and include the certificates into their
879 own custom cacerts file.
880 Failure to provide a populated cacerts file
881 will result in verification errors of a certificate chain during runtime.
882 The variable
883 <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
884 can be used to override the default location of the
885 cacerts file that will get placed in your build.
886 By default an empty cacerts file is provided and that should be
887 fine for most JDK developers.
888 </blockquote>
889 <!-- ------------------------------------------------------ -->
890 <h4><a name="compilers">Compilers</a></h4>
891 <blockquote>
892 <strong><a name="gcc">Linux gcc/binutils</a></strong>
893 <blockquote>
894 The GNU gcc compiler version should be 4 or newer.
895 The compiler used should be the default compiler installed
896 in <tt>/usr/bin</tt>.
897 </blockquote>
898 <strong><a name="studio">Solaris: Sun Studio</a></strong>
899 <blockquote>
900 At a minimum, the
901 <a href="http://developers.sun.com/sunstudio/index.jsp" target="_blank">
902 Sun Studio 12 Compilers</a>
903 (containing version 5.9 of the C and C++ compilers) is required,
904 with patches from the
905 <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access" target="_blank">
906 SunSolve web site</a>.
907 <p>
908 Set
909 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
910 to point to the location of
911 the compiler binaries, and place this location in the <tt>PATH</tt>.
912 <p>
913 The Sun Studio Express compilers at:
914 <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
915 Sun Studio Express Download site</a>
916 are also an option, although these compilers have not
917 been extensively used yet.
918 </blockquote>
919 <strong><a name="msvc">Windows i586: Microsoft Visual Studio Compilers</a></strong>
920 <blockquote>
921 The 32-bit OpenJDK Windows build
922 requires
923 Microsoft Visual Studio C++ 2008 (VS2008) Standard
924 Edition compiler.
925 The compiler and other tools are expected to reside
926 in the location defined by the variable
927 <tt>VS90COMNTOOLS</tt> which
928 is set by the Microsoft Visual Studio installer.
929 <p>
930 Once the compiler is installed,
931 it is recommended that you run <tt>VCVARS32.BAT</tt>
932 to set the compiler environment variables
933 <tt>INCLUDE</tt>,
934 <tt>LIB</tt>, and
935 <tt>PATH</tt>
936 prior to building the
937 OpenJDK.
938 The above environment variables <b>MUST</b> be set.
939 <p>
940 <b>WARNING:</b> Make sure you check out the
941 <a href="#cygwin">CYGWIN link.exe WARNING</a>.
942 The path <tt>/usr/bin</tt> must be after the path to the
943 Visual Studio product.
944 </blockquote>
945 <strong><a name="mssdk">Windows: Microsoft Platform SDK</a></strong>
946 <blockquote>
947 On <b>X64</b>, the Microsoft Platform Software
948 Development Kit (SDK), April 2005 Edition compiler,
949 is required for building the OpenJDK
950 because it contains the C/C++ compiler.
951 You will need to minimally install the Core SDK and
952 the MDAC SDK features of this compiler.
953 <p>
954 Once the Platform SDK is installed,
955 it is recommended that you run <tt>SetEnv.Cmd /X64</tt>
956 to set the compiler environment variables
957 <tt>MSSDK</tt>,
958 <tt>MSTOOLS</tt>,
959 <tt>INCLUDE</tt>,
960 <tt>LIB</tt>, and
961 <tt>PATH</tt>
962 prior to building the
963 OpenJDK.
964 The above environment variables <b>MUST</b> be set.
965 <p>
966 This Platform SDK compiler is only used on X64 builds
967 but other parts of the Platform SDK may be used
968 for the X86 builds.
969 </blockquote>
970 </blockquote>
971 <!-- ------------------------------------------------------ -->
972 <h4><a name="zip">Zip and Unzip</a></h4>
973 <blockquote>
974 Version 2.2 (November 3rd 1997) or newer of the zip utility
975 and version 5.12 or newer of the unzip utility is needed
976 to build the JDK.
977 With Solaris, Linux, and Windows CYGWIN, the zip and unzip
978 utilities installed on the system should be fine.
979 Information and the source code for
980 ZIP.EXE and UNZIP.EXE is available on the
981 <a href="http://www.info-zip.org"
982 target="_blank">info-zip web site</a>.
983 </blockquote>
984 <!-- ------------------------------------------------------ -->
985 <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris & Linux)</a></h4>
986 <blockquote>
987 <strong>Solaris:</strong>
988 CUPS header files are required for building the
989 OpenJDK on Solaris.
990 The Solaris header files can be obtained by installing
991 the package <strong>SFWcups</strong> from the Solaris Software
992 Companion CD/DVD, these often will be installed into
993 <tt>/opt/sfw/cups</tt>.
994 <p>
995 <strong>Linux:</strong>
996 CUPS header files are required for building the
997 OpenJDK on Linux.
998 The Linux header files are usually available from a "cups"
999 development package, it's recommended that you try and use
1000 the package provided by the particular version of Linux that
1001 you are using.
1002 <p>
1003 The CUPS header files can always be downloaded from
1004 <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1005 The variable
1006 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1007 can be used to override the default location of the
1008 CUPS Header files.
1009 </blockquote>
1010 <!-- ------------------------------------------------------ -->
1011 <h4><a name="xrender">XRender Extension Headers (Solaris & Linux)</a></h4>
1012 <blockquote>
1013 <p>
1014 <strong>Solaris:</strong>
1015 XRender header files are required for building the
1016 OpenJDK on Solaris.
1017 The XRender header file is included with the other X11 header files
1018 in the package <strong>SFWxwinc</strong> on new enough versions of
1019 Solaris and will be installed in
1020 <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
1021 </p><p>
1022 <strong>Linux:</strong>
1023 XRender header files are required for building the
1024 OpenJDK on Linux.
1025 The Linux header files are usually available from a "Xrender"
1026 development package, it's recommended that you try and use
1027 the package provided by the particular distribution of Linux that
1028 you are using.
1029 </p>
1030 </blockquote>
1031 <!-- ------------------------------------------------------ -->
1032 <h4><a name="freetype">FreeType 2</a></h4>
1033 <blockquote>
1034 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1035 On Unix systems required files can be available as part of your
1036 distribution (while you still may need to upgrade them).
1037 Note that you need development version of package that
1038 includes both FreeType library and header files.
1039 <p>
1040 You can always download latest FreeType version from the
1041 <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
1042 <p>
1043 Makefiles will try to pick FreeType from /usr/lib and /usr/include.
1044 In case it is installed elsewhere you will need to set environment
1045 variables
1046 <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
1047 and
1048 <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
1049 to refer to place where library and header files are installed.
1050 <p>
1051 Building the freetype 2 libraries from scratch is also possible,
1052 however on Windows refer to the
1053 <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
1054 Windows FreeType DLL build instructions</a>.
1055 <p>
1056 Note that by default FreeType is built with byte code hinting
1057 support disabled due to licensing restrictions.
1058 In this case, text appearance and metrics are expected to
1059 differ from Sun's official JDK build.
1060 See
1061 <a href="http://freetype.sourceforge.net/freetype2/index.html">
1062 the SourceForge FreeType2 Home Page
1063 </a>
1064 for more information.
1065 </blockquote>
1066 <!-- ------------------------------------------------------ -->
1067 <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
1068 <blockquote>
1069 <strong>Linux only:</strong>
1070 Version 0.9.1 or newer of the ALSA files are
1071 required for building the OpenJDK on Linux.
1072 These Linux files are usually available from an "alsa"
1073 of "libasound"
1074 development package, it's highly recommended that you try and use
1075 the package provided by the particular version of Linux that
1076 you are using.
1077 The makefiles will check this emit a sanity error if it is
1078 missing or the wrong version.
1079 <p>
1080 In particular, older Linux systems will likely not have the
1081 right version of ALSA installed, for example
1082 Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
1083 recent ALSA distribution.
1084 On rpm-based systems, you can see if ALSA is installed by
1085 running this command:
1086 <pre>
1087 <tt>rpm -qa | grep alsa</tt>
1088 </pre>
1089 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
1090 <p>
1091 If your distribution does not come with ALSA, and you can't
1092 find ALSA packages built for your particular system,
1093 you can try to install the pre-built ALSA rpm packages from
1094 <a href="http://www.freshrpms.net/" target="_blank">
1095 <tt>www.freshrpms.net</tt></a>.
1096 Note that installing a newer ALSA could
1097 break sound output if an older version of ALSA was previously
1098 installed on the system, but it will enable JDK compilation.
1099 <blockquote>
1100 Installation: execute as root<br>
1101 [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
1102 [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
1103 Uninstallation:<br>
1104 [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
1105 [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
1106 Make sure that you do not link to the static library
1107 (<tt>libasound.a</tt>),
1108 by verifying that the dynamic library (<tt>libasound.so</tt>) is
1109 correctly installed in <tt>/usr/lib</tt>.
1110 </blockquote>
1111 As a last resort you can go to the
1112 <a href="http://www.alsa-project.org" target="_blank">
1113 Advanced Linux Sound Architecture Site</a> and build it from
1114 source.
1115 <blockquote>
1116 Download driver and library
1117 source tarballs from
1118 <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>.
1119 As root, execute the following
1120 commands (you may need to adapt the version number):
1121 <pre>
1122 <tt>
1123 $ tar xjf alsa-driver-0.9.1.tar.bz2
1124 $ cd alsa-driver-0.9.1
1125 $ ./configure
1126 $ make install
1127 $ cd ..
1128 $ tar xjf alsa-lib-0.9.1.tar.bz2
1129 $ cd alsa-lib-0.9.1
1130 $ ./configure
1131 $ make install
1132 </tt>
1133 </pre>
1134 Should one of the above steps fail, refer to the documentation on
1135 ALSA's home page.
1136 </blockquote>
1137 Note that this is a minimum install that enables
1138 building the JDK platform. To actually use ALSA sound drivers, more
1139 steps are necessary as outlined in the documentation on ALSA's homepage.
1140 <p>
1141 ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
1142 the <tt>alsa-lib-0.9.1</tt> directory and then in
1143 <tt>alsa-driver-0.9.1</tt>.
1144 </blockquote>
1145 There are no ALT* variables to change the assumed locations of ALSA,
1146 the makefiles will expect to find the ALSA include files and library at:
1147 <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
1148 </blockquote>
1149 <!-- ------------------------------------------------------ -->
1150 <h4>Windows Specific Dependencies</h4>
1151 <blockquote>
1152 <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
1153 <blockquote>
1154 The OpenJDK requires access to a set of unix command tools
1155 on Windows which can be supplied by
1156 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>.
1157 <p>
1158 The OpenJDK build requires CYGWIN version 1.5.12 or newer.
1159 Information about CYGWIN can
1160 be obtained from the CYGWIN website at
1161 <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
1162 <p>
1163 By default CYGWIN doesn't install all the tools required for building
1164 the OpenJDK.
1165 Along with the default installation, you need to install
1166 the following tools.
1167 <blockquote>
1168 <table border="1">
1169 <thead>
1170 <tr>
1171 <td>Binary Name</td>
1172 <td>Category</td>
1173 <td>Package</td>
1174 <td>Description</td>
1175 </tr>
1176 </thead>
1177 <tbody>
1178 <tr>
1179 <td>ar.exe</td>
1180 <td>Devel</td>
1181 <td>binutils</td>
1182 <td>The GNU assembler, linker and binary
1183 utilities</td>
1184 </tr>
1185 <tr>
1186 <td>make.exe</td>
1187 <td>Devel</td>
1188 <td>make</td>
1189 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
1190 <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
1191 </tr>
1192 <tr>
1193 <td>m4.exe</td>
1194 <td>Interpreters</td>
1195 <td>m4</td>
1196 <td>GNU implementation of the traditional Unix macro
1197 processor</td>
1198 </tr>
1199 <tr>
1200 <td>cpio.exe</td>
1201 <td>Utils</td>
1202 <td>cpio</td>
1203 <td>A program to manage archives of files</td>
1204 </tr>
1205 <tr>
1206 <td>gawk.exe</td>
1207 <td>Utils</td>
1208 <td>awk</td>
1209 <td>Pattern-directed scanning and processing language</td>
1210 </tr>
1211 <tr>
1212 <td>file.exe</td>
1213 <td>Utils</td>
1214 <td>file</td>
1215 <td>Determines file type using 'magic' numbers</td>
1216 </tr>
1217 <tr>
1218 <td>zip.exe</td>
1219 <td>Archive</td>
1220 <td>zip</td>
1221 <td>Package and compress (archive) files</td>
1222 </tr>
1223 <tr>
1224 <td>unzip.exe</td>
1225 <td>Archive</td>
1226 <td>unzip</td>
1227 <td>Extract compressed files in a ZIP archive</td>
1228 </tr>
1229 <tr>
1230 <td>free.exe</td>
1231 <td>System</td>
1232 <td>procps</td>
1233 <td>Display amount of free and used memory in the system</td>
1234 </tr>
1235 </tbody>
1236 </table>
1237 </blockquote>
1238 <p>
1239 Note that the CYGWIN software can conflict with other non-CYGWIN
1240 software on your Windows system.
1241 CYGWIN provides a
1242 <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1243 known issues and problems, of particular interest is the
1244 section on
1245 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1246 BLODA (applications that interfere with CYGWIN)</a>.
1247 <p>
1248 <b>WARNING:</b>
1249 Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1250 with the Visual Studio version. You need the Visual Studio
1251 version of <tt>link.exe</tt>, not the CYGWIN one.
1252 So it's important that the Visual Studio paths in PATH preceed
1253 the CYGWIN path <tt>/usr/bin</tt>.
1254 </blockquote>
1255 <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
1256 <blockquote>
1257 Microsoft DirectX 9.0 SDK (Summer 2004)
1258 headers are required for building
1259 OpenJDK.
1260 This SDK can be downloaded from
1261 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&displaylang=en" target="_blank">
1262 Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
1263 If the link above becomes obsolete, the SDK can be found from
1264 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1265 (search with "DirectX 9.0 SDK Update Summer 2004").
1266 The location of this SDK can be set with
1267 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1268 but it's normally found via the DirectX environment variable
1269 <tt>DXSDK_DIR</tt>.
1270 </blockquote>
1271 <strong><a name="msvcrt"><tt>MSVCRT.DLL</tt></a></strong>
1272 <blockquote>
1273 <strong>i586 only:</strong>
1274 The OpenJDK 32-bit build requires access to a redistributable
1275 <tt>MSVCRT.DLL</tt>.
1276 If the <tt>MSVCRT.DLL</tt> is not installed in
1277 the system32 directory set the
1278 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
1279 variable to the location of this file.
1280 <p>
1281 <strong>X64 only:</strong>
1282 The OpenJDK 64-bit build requires access to a redistributable
1283 <tt>MSVCRT.DLL</tt>, which is
1284 usually supplied by the
1285 <a href="#mssdk">Platform SDK</a>.
1286 If it is not available from the Platform SDK,
1287 set the
1288 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
1289 variable to the location of this file.
1290 </blockquote>
1291 <strong><tt><a name="msvcr90">MSVCR90.DLL</a></tt></strong>
1292 <blockquote>
1293 <strong>i586 only:</strong>
1294 The
1295 OpenJDK
1296 build requires access to a redistributable
1297 <tt>MSVCR90.DLL</tt> which should be
1298 supplied by the
1299 <a href="#msvc">Visual Studio product</a>.
1300 If the <tt>MSVCR90.DLL</tt> is not available from the
1301 Visual Studio product
1302 set the
1303 <a href="#ALT_MSVCR90_DLL_PATH"><tt>ALT_MSVCR90_DLL_PATH</tt></a>
1304 variable to the location of this file.
1305 </blockquote>
1306 </blockquote>
1307 <!-- ------------------------------------------------------ -->
1308 <hr>
1309 <h2><a name="creating">Creating the Build</a></h2>
1310 <blockquote>
1311 Once a machine is setup to build the OpenJDK,
1312 the steps to create the build are fairly simple.
1313 The various ALT settings can either be made into variables
1314 or can be supplied on the
1315 <a href="#gmake"><tt><i>gmake</i></tt></a>
1316 command.
1317 <ol>
1318 <li>Use the sanity rule to double check all the ALT settings:
1319 <blockquote>
1320 <tt>
1321 <i>gmake</i>
1322 sanity
1323 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1324 [other "ALT_" overrides]
1325 </tt>
1326 </blockquote>
1327 </li>
1328 <li>Start the build with the command:
1329 <blockquote>
1330 <tt>
1331 <i>gmake</i>
1332 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1333 [ALT_OUTPUTDIR=<i>output_directory</i>]
1334 [other "ALT_" overrides]
1335 </tt>
1336 </blockquote>
1337 </li>
1338 </ol>
1339 <p>
1340 <strong>Solaris:</strong>
1341 Note that ARCH_DATA_MODEL is really only needed on Solaris to
1342 indicate you want to built the 64-bit version.
1343 And before the Solaris 64-bit binaries can be used, they
1344 must be merged with the binaries from a separate 32-bit build.
1345 The merged binaries may then be used in either 32-bit or 64-bit mode, with
1346 the selection occurring at runtime
1347 with the <tt>-d32</tt> or <tt>-d64</tt> options.
1348 </blockquote>
1349 <!-- ------------------------------------------------------ -->
1350 <hr>
1351 <h2><a name="testing">Testing the Build</a></h2>
1352 <blockquote>
1353 When the build is completed, you should see the generated
1354 binaries and associated files in the <tt>j2sdk-image</tt>
1355 directory in the output directory.
1356 The default output directory is
1357 <tt>build/<i>platform</i></tt>,
1358 where <tt><i>platform</i></tt> is one of
1359 <tt><ul>
1360 <li>solaris-sparc</li>
1361 <li>solaris-sparcv9</li>
1362 <li>solaris-i586</li>
1363 <li>solaris-amd64</li>
1364 <li>linux-i586</li>
1365 <li>linux-amd64</li>
1366 <li>windows-i586</li>
1367 <li>windows-amd64</li>
1368 </ul></tt>
1369 In particular, the
1370 <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
1371 directory should contain executables for the
1372 OpenJDK tools and utilities.
1373 <p>
1374 You can test that the build completed properly by using the build
1375 to run the various demos that you will find in the
1376 <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
1377 directory.
1378 <p>
1379 The provided regression tests can be run with the <tt>jtreg</tt>
1380 utility from
1381 <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
1382 </blockquote>
1383 <!-- ------------------------------------------------------ -->
1384 <hr>
1385 <h2><a name="variables">Environment/Make Variables</a></h2>
1386 <p>
1387 Some of the
1388 environment or make variables (just called <b>variables</b> in this
1389 document) that can impact the build are:
1390 <blockquote>
1391 <dl>
1392 <dt><a name="path"><tt>PATH</tt></a> </dt>
1393 <dd>Typically you want to set the <tt>PATH</tt> to include:
1394 <ul>
1395 <li>The location of the GNU make binary</li>
1396 <li>The location of the Bootstrap JDK <tt>java</tt>
1397 (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
1398 <li>The location of the C/C++ compilers
1399 (see <a href="#compilers"><tt>compilers</tt></a>)</li>
1400 <li>The location or locations for the Unix command utilities
1401 (e.g. <tt>/usr/bin</tt>)</li>
1402 </ul>
1403 </dd>
1404 <dt><tt>MILESTONE</tt> </dt>
1405 <dd>
1406 The milestone name for the build (<i>e.g.</i>"beta").
1407 The default value is "internal".
1408 </dd>
1409 <dt><tt>BUILD_NUMBER</tt> </dt>
1410 <dd>
1411 The build number for the build (<i>e.g.</i> "b27").
1412 The default value is "b00".
1413 </dd>
1414 <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
1415 <dd>The <tt>ARCH_DATA_MODEL</tt> variable
1416 is used to specify whether the build is to generate 32-bit or 64-bit
1417 binaries.
1418 The Solaris build supports either 32-bit or 64-bit builds, but
1419 Windows and Linux will support only one, depending on the specific
1420 OS being used.
1421 Normally, setting this variable is only necessary on Solaris.
1422 Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
1423 or to <tt>64</tt> for generating 64-bit binaries.
1424 </dd>
1425 <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
1426 <dd>
1427 The location of the bootstrap JDK installation.
1428 See <a href="#bootjdk">Bootstrap JDK</a> for more information.
1429 You should always install your own local Bootstrap JDK and
1430 always set <tt>ALT_BOOTDIR</tt> explicitly.
1431 </dd>
1432 <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
1433 <dd>
1434 The location of the binary plugs installation.
1435 See <a href="#binaryplugs">Binary Plugs</a> for more information.
1436 You should always have a local copy of a
1437 recent Binary Plugs install image
1438 and set this variable to that location.
1439 </dd>
1440 <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
1441 <dd>
1442 The location of a previously built JDK installation.
1443 See <a href="#importjdk">Optional Import JDK</a> for more information.
1444 </dd>
1445 <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
1446 <dd>
1447 An override for specifying the (absolute) path of where the
1448 build output is to go.
1449 The default output directory will be build/<i>platform</i>.
1450 </dd>
1451 <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
1452 <dd>
1453 The location of the C/C++ compiler.
1454 The default varies depending on the platform.
1455 </dd>
1456 <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
1457 <dd>
1458 The location of the <a href="#cacerts">cacerts</a> file.
1459 The default will refer to
1460 <tt>jdk/src/share/lib/security/cacerts</tt>.
1461 </dd>
1462 <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
1463 <dd>
1464 The location of the CUPS header files.
1465 See <a href="#cups">CUPS information</a> for more information.
1466 If this path does not exist the fallback path is
1467 <tt>/usr/include</tt>.
1468 </dd>
1469 <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
1470 <dd>
1471 The location of the FreeType shared library.
1472 See <a href="#freetype">FreeType information</a> for details.
1473 </dd>
1474 <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
1475 <dd>
1476 The location of the FreeType header files.
1477 See <a href="#freetype">FreeType information</a> for details.
1478 </dd>
1479 <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
1480 <dd>
1481 The default root location of the devtools.
1482 The default value is
1483 <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
1484 </dd>
1485 <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
1486 <dd>
1487 The location of tools like the
1488 <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
1489 binaries, but might also contain the GNU make utility
1490 (<tt><i>gmake</i></tt>).
1491 So this area is a bit of a grab bag, especially on Windows.
1492 The default value depends on the platform and
1493 Unix Commands being used.
1494 On Linux the default will be
1495 <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>,
1496 on Solaris
1497 <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>,
1498 and on Windows with CYGWIN
1499 <tt>/usr/bin</tt>.
1500 </dd>
1501 <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
1502 <dd>
1503 <strong>Solaris only:</strong>
1504 An override for specifying where the Unix CCS
1505 command set are located.
1506 The default location is <tt>/usr/ccs/bin</tt>
1507 </dd>
1508 <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
1509 <dd>
1510 The default root location for many of the ALT path locations
1511 of the following ALT variables.
1512 The default value is
1513 <tt>"/java"</tt> on Solaris and Linux,
1514 <tt>"J:"</tt> on Windows.
1515 </dd>
1516 <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
1517 <dd>
1518 These are useful in managing builds on multiple platforms.
1519 The default network location for all of the import JDK images
1520 for all platforms.
1521 If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
1522 is not set, this directory will be used and should contain
1523 the following directories:
1524 <tt>solaris-sparc</tt>,
1525 <tt>solaris-i586</tt>,
1526 <tt>solaris-sparcv9</tt>,
1527 <tt>solaris-amd64</tt>,
1528 <tt>linux-i586</tt>,
1529 <tt>linux-amd64</tt>,
1530 <tt>windows-i586</tt>,
1531 and
1532 <tt>windows-amd64</tt>.
1533 Where each of these directories contain the import JDK image
1534 for that platform.
1535 </dd>
1536 <dt><a name="ALT_BUILD_BINARY_PLUGS_PATH"><tt>ALT_BUILD_BINARY_PLUGS_PATH</tt></a></dt>
1537 <dd>
1538 These are useful in managing builds on multiple platforms.
1539 The default network location for all of the binary plug images
1540 for all platforms.
1541 If <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
1542 is not set, this directory will be used and should contain
1543 the following directories:
1544 <tt>solaris-sparc</tt>,
1545 <tt>solaris-i586</tt>,
1546 <tt>solaris-sparcv9</tt>,
1547 <tt>solaris-amd64</tt>,
1548 <tt>linux-i586</tt>,
1549 <tt>linux-amd64</tt>,
1550 <tt>windows-i586</tt>,
1551 and
1552 <tt>windows-amd64</tt>.
1553 Where each of these directories contain the binary plugs image
1554 for that platform.
1555 </dd>
1556 <dt><strong>Windows specific:</strong></dt>
1557 <dd>
1558 <dl>
1559 <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
1560 <dd>
1561 The location of the
1562 Microsoft Visual Studio
1563 tools 'bin' directory.
1564 The default is usually derived from
1565 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
1566 </dd>
1567 <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
1568 <dd>
1569 The location of the
1570 <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
1571 The default will be to try and use the DirectX environment
1572 variable <tt>DXSDK_DIR</tt>,
1573 failing that, look in <tt>C:/DXSDK</tt>.
1574 </dd>
1575 <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
1576 <dd>
1577 The location of the
1578 <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>.
1579 </dd>
1580 <dt><tt><a name="ALT_MSVCR90_DLL_PATH">ALT_MSVCR90_DLL_PATH</a></tt> </dt>
1581 <dd>
1582 <strong>i586 only:</strong>
1583 The location of the
1584 <a href="#msvcr90"><tt>MSVCR90.DLL</tt></a>.
1585 </dd>
1586 </dl>
1587 </dd>
1588 </dl>
1589 </blockquote>
1590 <!-- ------------------------------------------------------ -->
1591 <hr>
1592 <h2><a name="troubleshooting">Troubleshooting</a></h2>
1593 <blockquote>
1594 A build can fail for any number of reasons.
1595 Most failures
1596 are a result of trying to build in an environment in which all the
1597 pre-build requirements have not been met.
1598 The first step in
1599 troubleshooting a build failure is to recheck that you have satisfied
1600 all the pre-build requirements for your platform.
1601 Look for the check list of the platform you are building on in the
1602 <a href="#contents">Table of Contents</a>.
1603 <p>
1604 You can validate your build environment by using the <tt>sanity</tt>
1605 target.
1606 Any errors listed
1607 will stop the build from starting, and any warnings may result in
1608 a flawed product build.
1609 We strongly encourage you to evaluate every
1610 sanity check warning and fix it if required, before you proceed
1611 further with your build.
1612 <p>
1613 Some of the more common problems with builds are briefly described
1614 below, with suggestions for remedies.
1615 <ul>
1616 <li>
1617 <b>Slow Builds:</b>
1618 <blockquote>
1619 If your build machine seems to be overloaded from too many
1620 simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
1621 variable to <tt>1</tt> (if you're using a multiple CPU
1622 machine, setting it to more than the the number of CPUs is probably
1623 not a good idea).
1624 <p>
1625 Creating the javadocs can be very slow, if you are running
1626 javadoc, consider skipping that step.
1627 <p>
1628 Faster hardware and more RAM always helps too.
1629 The VM build tends to be CPU intensive (many C++ compiles),
1630 and the rest of the JDK will often be disk intensive.
1631 <p>
1632 Faster compiles are possible using a tool called
1633 <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
1634 </blockquote>
1635 </li>
1636 <li>
1637 <b>File time issues:</b>
1638 <blockquote>
1639 If you see warnings that refer to file time stamps, e.g.
1640 <blockquote>
1641 <i>Warning message:</i><tt> File `xxx' has modification time in
1642 the future.</tt>
1643 <br>
1644 <i>Warning message:</i> <tt> Clock skew detected. Your build may
1645 be incomplete.</tt>
1646 </blockquote>
1647 These warnings can occur when the clock on the build machine is out of
1648 sync with the timestamps on the source files. Other errors, apparently
1649 unrelated but in fact caused by the clock skew, can occur along with
1650 the clock skew warnings. These secondary errors may tend to obscure the
1651 fact that the true root cause of the problem is an out-of-sync clock.
1652 For example, an out-of-sync clock has been known to cause an old
1653 version of javac to be used to compile some files, resulting in errors
1654 when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
1655 in the 1.4 source code.
1656 <p>
1657 If you see these warnings, reset the clock on the build
1658 machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
1659 containing the build output, and restart the build from the beginning.
1660 </blockquote>
1661 </li>
1662 <li>
1663 <b>Error message: <tt>Trouble writing out table to disk</tt></b>
1664 <blockquote>
1665 Increase the amount of swap space on your build machine.
1666 </blockquote>
1667 </li>
1668 <li>
1669 <b>Error Message: <tt>libstdc++ not found:</tt></b>
1670 <blockquote>
1671 This is caused by a missing libstdc++.a library.
1672 This is installed as part of a specific package
1673 (e.g. libstdc++.so.devel.386).
1674 By default some 64-bit Linux versions (e.g. Fedora)
1675 only install the 64-bit version of the libstdc++ package.
1676 Various parts of the JDK build require a static
1677 link of the C++ runtime libraries to allow for maximum
1678 portability of the built images.
1679 </blockquote>
1680 </li>
1681 <li>
1682 <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
1683 <blockquote>
1684 This is probably an issue with SELinux (See
1685 <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
1686 http://en.wikipedia.org/wiki/SELinux</a>).
1687 Parts of the VM is built without the <tt>-fPIC</tt> for
1688 performance reasons.
1689 <p>
1690 To completely disable SELinux:
1691 <tt>
1692 <ol>
1693 <li>$ su root</li>
1694 <li># system-config-securitylevel</li>
1695 <li>In the window that appears, select the SELinux tab</li>
1696 <li>Disable SELinux</li>
1697 </ol>
1698 </tt>
1699 <p>
1700 Alternatively, instead of completely disabling it you could
1701 disable just this one check.
1702 <tt>
1703 <ol>
1704 <li>Select System->Administration->SELinux Management</li>
1705 <li>In the SELinux Management Tool which appears,
1706 select "Boolean" from the menu on the left</li>
1707 <li>Expand the "Memory Protection" group</li>
1708 <li>Check the first item, labeled
1709 "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
1710 </ol>
1711 </tt>
1712 </blockquote>
1713 </li>
1714 <li>
1715 <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b>
1716 <blockquote>
1717 The CYGWIN software can conflict with other non-CYGWIN
1718 software. See the CYGWIN FAQ section on
1719 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1720 BLODA (applications that interfere with CYGWIN)</a>.
1721 </blockquote>
1722 </li>
1723 <li>
1724 <b>Windows Error Message: <tt>*** multiple target patterns. Stop.</tt></b>
1725 <blockquote>
1726 The CYGWIN make version 3.81 may not like the Windows <tt>C:/</tt>
1727 style paths, it may not like the ':' character in the path
1728 when used in a makefile target definition.
1729 See the <a href="#gmake"><tt><i>gmake</i></tt></a> section.
1730 </blockquote>
1731 </li>
1732 </ul>
1733 </blockquote>
1734 <hr>
1735 </body>
1736 </html>