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