blob: dd5005ee091556edde83d0c9dfff4315214e23e6 [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>
Kelly O'Hair213481a2010-12-22 12:25:52 -080027 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.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -070033 </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>
Kelly O'Hair213481a2010-12-22 12:25:52 -080040 <li><a href="#hg">Use of Mercurial</a>
41 <ul>
42 <li><a href="#get_source">Getting the Source</a></li>
43 </ul>
44 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -070045 <li><a href="#MBE">Minimum Build Environments</a></li>
Dalibor Topic73e9e342009-09-23 20:06:01 +020046 <li><a href="#SDBE">Specific Developer Build Environments</a>
Kelly O'Hair2928b812008-09-17 13:30:32 -070047 <ul>
48 <li><a href="#fedora">Fedora Linux</a> </li>
49 <li><a href="#centos">CentOS Linux</a> </li>
Kelly O'Hair213481a2010-12-22 12:25:52 -080050 <li><a href="#debian">Debian GNU/Linux</a></li>
51 <li><a href="#ubuntu">Ubuntu Linux</a> </li>
52 <li><a href="#opensuse">OpenSUSE</a></li>
53 <li><a href="#mandriva">Mandriva</a></li>
54 <li><a href="#opensolaris">OpenSolaris</a></li>
Kelly O'Hair2928b812008-09-17 13:30:32 -070055 </ul>
Kelly O'Hair213481a2010-12-22 12:25:52 -080056 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -070057 <li><a href="#directories">Source Directory Structure</a> </li>
58 <li><a href="#building">Build Information</a>
59 <ul>
60 <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
61 <li><a href="#linux">Basic Linux System Setup</a> </li>
62 <li><a href="#solaris">Basic Solaris System Setup</a> </li>
63 <li><a href="#windows">Basic Windows System Setup</a> </li>
Kelly O'Hair213481a2010-12-22 12:25:52 -080064 <li><a href="#dependencies">Build Dependencies</a>
65 <ul>
66 <li><a href="#bootjdk">Bootstrap JDK</a> </li>
67 <li><a href="#binaryplugs">Binary Plugs</a> </li>
68 <li><a href="#importjdk">Optional Import JDK</a> </li>
69 <li><a href="#ant">Ant</a> </li>
70 <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
71 <li><a href="#compilers">Compilers</a>
72 <ul>
73 <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
74 <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
75 <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
76 <li><a href="#gcc">Linux gcc/binutils</a> </li>
77 <li><a href="#studio">Sun Studio</a> </li>
78 </ul>
79 </li>
80 <li><a href="#zip">Zip and Unzip</a> </li>
81 <li><a href="#freetype">FreeType2 Fonts</a> </li>
82 <li>Linux and Solaris:
83 <ul>
84 <li><a href="#cups">CUPS Include files</a> </li>
85 <li><a href="#xrender">XRender Include files</a></li>
86 </ul>
87 </li>
88 <li>Linux only:
89 <ul>
90 <li><a href="#alsa">ALSA files</a> </li>
91 </ul>
92 </li>
93 <li>Windows only:
94 <ul>
95 <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
96 <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
97 </ul>
98 </li>
99 </ul>
100 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700101 </ul>
102 </li>
103 <li><a href="#creating">Creating the Build</a> </li>
104 <li><a href="#testing">Testing the Build</a> </li>
105 <li><a href="#variables">Environment/Make Variables</a></li>
106 <li><a href="#troubleshooting">Troubleshooting</a></li>
J. Duke686d76f2007-12-01 00:00:00 +0000107 </ul>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700108 </blockquote>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800109
110 <!-- ------------------------------------------------------ -->
111 <hr>
112 <h2><a name="hg">Use of Mercurial</a></h2>
113 <blockquote>
114 The OpenJDK sources are maintained with the revision control system
115 <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.
116 If you are new to Mercurial, please see the
117 <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a>
118 or refer to the <a href=""http://hgbook.red-bean.com/">Mercurial Book</a>.
119 The first few chapters of the book provide an excellent overview of
120 Mercurial, what it is and how it works.
121 <br>
122 For using Mercurial with the OpenJDK refer to the
123 <a href=""http://openjdk.java.net/guide/repositories.html#installConfig">
124 Developer Guide: Installing and Configuring Mercurial</a>
125 section for more information.
126 The Forest Extension is not part of the Mercurial install,
127 and is optional,
128 but can be obtained with the following commands:
129 <blockquote>
130 <tt>
131 hg clone https://bitbucket.org/pmezard/hgforest-crew/overview/ <i>YourHgForest</i>
132 </tt>
133 </blockquote>
134 Once you have the file <tt>forest.py</tt>, you need to add these
135 lines to your <tt>${HOME}/.hgrc</tt> file:
136 <blockquote>
137 <tt>
138 [extensions]
139 <br>forest = <i>YourHgForest</i>/forest.py
140 </tt>
141 </blockquote>
142
143 <!-- ------------------------------------------------------ -->
144 <h3><a name="get_source">Getting the Source</a></h3>
145 <blockquote>
146 To get the entire set of OpenJDK Mercurial repositories
147 using the Forest Extension:
148 <blockquote>
149 <tt>
150 hg fclone http://openjdk.java.net/jdk7/jdk7 <i>YourOpenJDK</i>
151 </tt>
152 </blockquote>
153 To get the entire set of OpenJDK Mercurial repositories
154 without using the Forest Extension:
155 <blockquote>
156 <tt>
157 hg clone http://openjdk.java.net/jdk7/jdk7 <i>YourOpenJDK</i>
158 <br>cd <i>YourOpenJDK</i>
159 <br>sh ./get_source.sh
160 </tt>
161 </blockquote>
162 Once you have all the repositories, the
163 script <tt>make/scripts/hgforest.sh</tt>
164 can be used to repeat the same <tt>hg</tt>
165 command on every repository in the forest, e.g.
166 <blockquote>
167 <tt>
168 cd <i>YourOpenJDK</i>
169 <br>sh ./make/scripts/hgforest.sh pull -u
170 </tt>
171 </blockquote>
172 You may find this script <tt>make/scripts/hgforest.sh</tt> faster
173 than the <tt>hg</tt> forest commands provided by the
174 Forest Extension.
175 </blockquote>
176
177 </blockquote>
178
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700179 <!-- ------------------------------------------------------ -->
180 <hr>
181 <h2><a name="MBE">Minimum Build Environments</a></h2>
182 <blockquote>
183 This file often describes specific requirements for what we call the
Kelly O'Haird03960122008-12-01 15:28:36 -0800184 "minimum build environments" (MBE) for this
185 specific release of the JDK,
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700186 Building with the MBE will generate the most compatible
187 bits that install on, and run correctly on, the most variations
188 of the same base OS and hardware architecture.
189 These usually represent what is often called the
190 least common denominator platforms.
191 It is understood that most developers will NOT be using these
192 specific platforms, and in fact creating these specific platforms
193 may be difficult due to the age of some of this software.
194 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800195 The minimum OS and C/C++ compiler versions needed for building the
196 OpenJDK:
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700197 <p>
198 <table border="1">
199 <thead>
200 <tr>
201 <th>Base OS and Architecture</th>
202 <th>OS</th>
Kelly O'Haird03960122008-12-01 15:28:36 -0800203 <th>C/C++ Compiler</th>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700204 <th>BOOT JDK</th>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700205 </tr>
206 </thead>
207 <tbody>
208 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800209 <td>Linux X86 (32-bit)</td>
210 <td>Fedora 9</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700211 <td>gcc 4 </td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700212 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700213 </tr>
214 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800215 <td>Linux X64 (64-bit)</td>
216 <td>Fedora 9</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700217 <td>gcc 4 </td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700218 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700219 </tr>
220 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800221 <td>Solaris SPARC (32-bit)</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700222 <td>Solaris 10u2 + patches
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700223 <br>
224 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800225 SunSolve</a> for patch downloads.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700226 </td>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -0700227 <td>Sun Studio 12 Update 1 + patches</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700228 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700229 </tr>
230 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800231 <td>Solaris SPARCV9 (64-bit)</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700232 <td>Solaris 10u2 + patches
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700233 <br>
234 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800235 SunSolve</a> for patch downloads.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700236 </td>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -0700237 <td>Sun Studio 12 Update 1 + patches</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700238 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700239 </tr>
240 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800241 <td>Solaris X86 (32-bit)</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700242 <td>Solaris 10u2 + patches
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700243 <br>
244 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800245 SunSolve</a> for patch downloads.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700246 </td>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -0700247 <td>Sun Studio 12 Update 1 + patches</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700248 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700249 </tr>
250 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800251 <td>Solaris X64 (64-bit)</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700252 <td>Solaris 10u2 + patches
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700253 <br>
254 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800255 SunSolve</a> for patch downloads.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700256 </td>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -0700257 <td>Sun Studio 12 Update 1 + patches</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700258 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700259 </tr>
260 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800261 <td>Windows X86 (32-bit)</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700262 <td>Windows XP</td>
Phil Racecd28ed52010-05-11 14:31:42 -0700263 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700264 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700265 </tr>
266 <tr>
Kelly O'Haird03960122008-12-01 15:28:36 -0800267 <td>Windows X64 (64-bit)</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700268 <td>Windows Server 2003 - Enterprise x64 Edition</td>
Phil Racecd28ed52010-05-11 14:31:42 -0700269 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
Xiomara Jayasenababd1162009-06-22 10:13:20 -0700270 <td>JDK 6u14 FCS </td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700271 </tr>
272 </tbody>
273 </table>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800274 <p>
Kelly O'Haird03960122008-12-01 15:28:36 -0800275 These same sources do indeed build on many more systems than the
276 above older generation systems, again the above is just a minimum.
Kelly O'Hair213481a2010-12-22 12:25:52 -0800277 <p>
Kelly O'Haird03960122008-12-01 15:28:36 -0800278 Compilation problems with newer or different C/C++ compilers is a
279 common problem.
280 Similarly, compilation problems related to changes to the
Kelly O'Hair213481a2010-12-22 12:25:52 -0800281 <tt>/usr/include</tt> or system header files is also a
Kelly O'Haird03960122008-12-01 15:28:36 -0800282 common problem with newer or unreleased OS versions.
283 Please report these types of problems as bugs so that they
284 can be dealt with accordingly.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700285 </blockquote>
286 <!-- ------------------------------------------------------ -->
287 <hr>
288 <h2><a name="SDBE">Specific Developer Build Environments</a></h2>
289 <blockquote>
290 We won't be listing all the possible environments, but
291 we will try to provide what information we have available to us.
292 </blockquote>
293 <!-- ------------------------------------------------------ -->
Dalibor Topic73e9e342009-09-23 20:06:01 +0200294 <h3><a name="fedora">Fedora</a></h3>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700295 <blockquote>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800296 <h4>Fedora 9</h4>
297 <p>
298 <blockquote>
299 After installing <a href="http://fedoraproject.org">Fedora</a> 9
Dalibor Topic73e9e342009-09-23 20:06:01 +0200300 you need to install several build dependencies. The simplest
301 way to do it is to execute the following commands as user
Kelly O'Hair213481a2010-12-22 12:25:52 -0800302 <tt>root</tt>:
303 <p/>
304 <code>yum-builddep java-openjdk</code>
305 <p/>
306 <code>yum install gcc gcc-c++</code>
307 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200308 In addition, it's necessary to set a few environment variables for the build:
309
Kelly O'Hair213481a2010-12-22 12:25:52 -0800310 <p/>
311 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
Kelly O'Hair2928b812008-09-17 13:30:32 -0700312 </blockquote>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800313 <h4>Fedora 10</h4>
314 <p>
315 <blockquote>
316 After installing <a href="http://fedoraproject.org">Fedora</a> 10
Dalibor Topic73e9e342009-09-23 20:06:01 +0200317 you need to install several build dependencies. The simplest
318 way to do it is to execute the following commands as user
Kelly O'Hair213481a2010-12-22 12:25:52 -0800319 <tt>root</tt>:
320 <p/>
321 <code>yum-builddep java-1.6.0-openjdk</code>
322 <p/>
323 <code>yum install gcc gcc-c++</code>
324 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200325 In addition, it's necessary to set a few environment variables for the build:
326
Kelly O'Hair213481a2010-12-22 12:25:52 -0800327 <p/>
328 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200329 </blockquote>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800330 <h4>Fedora 11</h4>
331 <p>
332 <blockquote>
333 After installing <a href="http://fedoraproject.org">Fedora</a> 11
Dalibor Topic73e9e342009-09-23 20:06:01 +0200334 you need to install several build dependencies. The simplest
335 way to do it is to execute the following commands as user
Kelly O'Hair213481a2010-12-22 12:25:52 -0800336 <tt>root</tt>:
337 <p/>
338 <code>yum-builddep java-1.6.0-openjdk</code>
339 <p/>
340 <code>yum install gcc gcc-c++</code>
341 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200342 In addition, it's necessary to set a few environment variables for the build:
343
Kelly O'Hair213481a2010-12-22 12:25:52 -0800344 <p/>
345 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
346 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700347 </blockquote>
348 <!-- ------------------------------------------------------ -->
Kelly O'Hair2928b812008-09-17 13:30:32 -0700349 <h3><a name="centos">CentOS 5.2</a></h3>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700350 <blockquote>
Kelly O'Hair2928b812008-09-17 13:30:32 -0700351 After installing
352 <a href="http://www.centos.org/">CentOS 5.2</a>
353 you need to make sure you have
354 the following Development bundles installed:
355 <blockquote>
356 <ul>
357 <li>Development Libraries</li>
358 <li>Development Tools</li>
359 <li>Java Development</li>
360 <li>X Software Development</li>
361 </ul>
362 </blockquote>
363 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800364 Plus the following packages:
Kelly O'Hair2928b812008-09-17 13:30:32 -0700365 <blockquote>
366 <ul>
367 <li>cups devel: Cups Development Package</li>
368 <li>alsa devel: Alsa Development Package</li>
369 <li>ant: Ant Package</li>
370 <li>Xi devel: libXi.so Development Package</li>
371 </ul>
372 </blockquote>
373 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800374 The freetype 2.3 packages don't seem to be available,
375 but the freetype 2.3 sources can be downloaded, built,
376 and installed easily enough from
377 <a href="http://downloads.sourceforge.net/freetype">
378 the freetype site</a>.
379 Build and install with something like:
Kelly O'Hair2928b812008-09-17 13:30:32 -0700380 <blockquote>
381 <tt>./configure && make && sudo -u root make install</tt>
382 </blockquote>
383 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800384 Mercurial packages could not be found easily, but a Google
385 search should find ones, and they usually include Python if
386 it's needed.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700387 </blockquote>
388 <!-- ------------------------------------------------------ -->
Dalibor Topic73e9e342009-09-23 20:06:01 +0200389 <h3><a name="debian">Debian</a></h3>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700390 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200391 <h4>Debian 5.0 (Lenny)</h4>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700392 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800393 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200394 After installing <a href="http://debian.org">Debian</a> 5
395 you need to install several build dependencies.
396 The simplest way to install the build dependencies is to
397 execute the following commands as user <tt>root</tt>:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800398 <p/>
399 <code>aptitude build-dep openjdk-6</code>
400 <p/>
401 <code>aptitude install openjdk-6-jdk libmotif-dev</code>
402 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200403 In addition, it's necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800404 <p/>
405 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
406 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700407 </blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200408 <!-- ====================================================== -->
Kelly O'Hair213481a2010-12-22 12:25:52 -0800409 <h3><a name="ubuntu">Ubuntu</a></h3>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200410 <blockquote>
411 <h4>Ubuntu 8.04</h4>
412 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800413 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200414 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04
415 you need to install several build dependencies.
Kelly O'Hair213481a2010-12-22 12:25:52 -0800416 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200417 First, you need to enable the universe repository in the
418 Software Sources application and reload the repository
419 information. The Software Sources application is available
420 under the System/Administration menu.
Kelly O'Hair213481a2010-12-22 12:25:52 -0800421 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200422 The simplest way to install the build dependencies is to
423 execute the following commands:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800424 <p/>
425 <code>sudo aptitude build-dep openjdk-6</code>
426 <p/>
427 <code>sudo aptitude install openjdk-6-jdk</code>
428 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200429 In addition, it's necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800430 <p/>
431 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
432 </blockquote>
433 <h4>Ubuntu 8.10</h4>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200434 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800435 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200436 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10
437 you need to install several build dependencies. The simplest
438 way to do it is to execute the following commands:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800439 <p/>
440 <code>sudo aptitude build-dep openjdk-6</code>
441 <p/>
442 <code>sudo aptitude install openjdk-6-jdk</code>
443 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200444 In addition, it's necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800445 <p/>
446 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
447 </blockquote>
448 <h4>Ubuntu 9.04</h4>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200449 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800450 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200451 After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04
452 you need to install several build dependencies. The simplest
453 way to do it is to execute the following commands:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800454 <p/>
455 <code>sudo aptitude build-dep openjdk-6</code>
456 <p/>
457 <code>sudo aptitude install openjdk-6-jdk</code>
458 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200459 In addition, it's necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800460 <p/>
461 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
462 </blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200463 </blockquote>
464 <!-- ====================================================== -->
465 <h3><a name="opensuse">OpenSUSE</a></h3>
466 <blockquote>
467 <h4>OpenSUSE 11.1</h4>
468 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800469 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200470 After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1
471 you need to install several build dependencies.
472 The simplest way to install the build dependencies is to
473 execute the following commands:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800474 <p/>
475 <code>sudo zypper source-install -d java-1_6_0-openjdk</code>
476 <p/>
477 <code>sudo zypper install make</code>
478 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200479 In addition, it is necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800480 <p/>
481 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
482 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200483 Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800484 <p/>
485 <code>export -n JAVA_HOME</code>
486 </blockquote>
487 </blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200488 <!-- ====================================================== -->
489 <h3><a name="mandriva">Mandriva</a></h3>
490 <blockquote>
491 <h4>Mandriva Linux One 2009 Spring</h4>
492 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800493 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200494 After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring
495 you need to install several build dependencies.
496 The simplest way to install the build dependencies is to
497 execute the following commands as user <tt>root</tt>:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800498 <p/>
499 <code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200500 <p/>
501 In addition, it is necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800502 <p/>
503 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
504 </blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200505 </blockquote>
506 <!-- ====================================================== -->
507 <h3><a name="opensolaris">OpenSolaris</a></h3>
508 <blockquote>
509 <h4>OpenSolaris 2009.06</h4>
510 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800511 <blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200512 After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06
513 you need to install several build dependencies.
514 The simplest way to install the build dependencies is to
515 execute the following commands:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800516 <p/>
517 <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200518 <p/>
519 In addition, it is necessary to set a few environment variables for the build:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800520 <p/>
521 <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
522 <p/>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200523 Finally, you need to make sure that the build process can find the Sun Studio compilers:
Kelly O'Hair213481a2010-12-22 12:25:52 -0800524 <p/>
525 <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
526 </blockquote>
Dalibor Topic73e9e342009-09-23 20:06:01 +0200527 </blockquote>
528 <!-- ------------------------------------------------------ -->
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700529 <hr>
530 <h2><a name="directories">Source Directory Structure</a></h2>
531 <blockquote>
532 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800533 The source code for the OpenJDK is delivered in a set of
534 directories:
535 <tt>hotspot</tt>,
536 <tt>langtools</tt>,
537 <tt>corba</tt>,
538 <tt>jaxws</tt>,
539 <tt>jaxp</tt>,
540 and
541 <tt>jdk</tt>.
542 The <tt>hotspot</tt> directory contains the source code and make
543 files for building the OpenJDK Hotspot Virtual Machine.
544 The <tt>langtools</tt> directory contains the source code and make
545 files for building the OpenJDK javac and language tools.
546 The <tt>corba</tt> directory contains the source code and make
547 files for building the OpenJDK Corba files.
548 The <tt>jaxws</tt> directory contains the source code and make
549 files for building the OpenJDK JAXWS files.
550 The <tt>jaxp</tt> directory contains the source code and make
551 files for building the OpenJDK JAXP files.
552 The <tt>jdk</tt> directory contains the source code and make files for
553 building the OpenJDK runtime libraries and misc files.
554 The top level <tt>Makefile</tt>
555 is used to build the entire OpenJDK.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700556 </blockquote>
557 <!-- ------------------------------------------------------ -->
558 <hr>
559 <h2><a name="building">Build Information</a></h2>
560 <blockquote>
561 Building the OpenJDK
562 is done with a <tt><i>gmake</i></tt>
563 command line and various
564 environment or make variable settings that direct the make rules
565 to where various components have been installed.
566 Where possible the makefiles will attempt to located the various
567 components in the default locations or any component specific
568 variable settings.
569 When the normal defaults fail or components cannot be found,
570 the various
571 <tt>ALT_*</tt> variables (alternates)
572 can be used to help the makefiles locate components.
573 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800574 Refer to the bash/sh/ksh setup file
575 <tt>jdk/make/jdk_generic_profile.sh</tt>
576 if you need help in setting up your environment variables.
577 A build could be as simple as:
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700578 <blockquote>
579 <pre><tt>
J. Duke686d76f2007-12-01 00:00:00 +0000580 bash
581 . jdk/make/jdk_generic_profile.sh
582 <i>gmake</i> sanity &amp;&amp; <i>gmake</i>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700583 </tt></pre>
J. Duke686d76f2007-12-01 00:00:00 +0000584 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700585 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800586 Of course ksh or sh would work too.
587 But some customization will probably be necessary.
588 The <tt>sanity</tt> rule will make some basic checks on build
589 dependencies and generate appropriate warning messages
590 regarding missing, out of date, or newer than expected components
591 found on your system.
J. Duke686d76f2007-12-01 00:00:00 +0000592 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700593 <!-- ------------------------------------------------------ -->
594 <hr>
595 <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
J. Duke686d76f2007-12-01 00:00:00 +0000596 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700597 The Makefiles in the OpenJDK are only valid when used with the
598 GNU version of the utility command <tt>make</tt>
599 (<tt><i>gmake</i></tt>).
600 A few notes about using GNU make:
601 <ul>
602 <li>
Kelly O'Haircec00df2010-12-18 18:28:31 -0800603 In general, you need GNU make version 3.81 or newer.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700604 </li>
605 <li>
606 Place the location of the GNU make binary in the <tt>PATH</tt>.
607 </li>
608 <li>
609 <strong>Linux:</strong>
610 The <tt>/usr/bin/make</tt> command should work fine for you.
611 </li>
612 <li>
613 <strong>Solaris:</strong>
614 Do NOT use <tt>/usr/bin/make</tt> on Solaris.
615 If your Solaris system has the software
616 from the Solaris Companion CD installed,
617 you should use <tt>gmake</tt>
618 which will be located in either the <tt>/opt/sfw/bin</tt> or
619 <tt>/usr/sfw/bin</tt> directory.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700620 In more recent versions of Solaris GNU make can be found
621 at <tt>/usr/bin/gmake</tt>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700622 </li>
623 <li>
624 <strong>Windows:</strong>
Kelly O'Hair4eb5fcb2009-10-28 13:44:30 -0700625 Make sure you start your build inside a bash/sh/ksh shell
626 and are using a <tt>make.exe</tt> utility built for that
627 environment (a cygwin <tt>make.exe</tt> is not the same
628 as a <tt>make.exe</tt> built for something like
629 <a href="http://www.mkssoftware.com/">MKS</a>).
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700630 <br>
631 <b>WARNING:</b> Watch out for make version 3.81, it may
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700632 not work due to a lack of support for MS-DOS drive letter paths
633 like <tt>C:/</tt> or <tt>C:\</tt>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700634 Use a 3.80 version, or find a newer
Kelly O'Haird03960122008-12-01 15:28:36 -0800635 version that has this problem fixed.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700636 The older 3.80 version of make.exe can be downloaded with this
637 <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800638 link</a>.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700639 Use of this older 3.80 make.exe may require that you install the
640 libintl2.dll library or libintl2 cygwin package which is
641 no longer installed by default by the cygwin installer.
642 <br>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700643 Also see the
644 <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800645 mozilla developer center</a>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700646 on this topic.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700647 <br>
648 It's hoped that when make 3.82 starts shipping in a future cygwin
649 release that this MS-DOS path issue will be fixed.
650 In addition to the above 3.80 make.exe you can download
651 this
652 <a href="http://www.cmake.org/files/cygwin/make.exe">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800653 www.cmake.org make.exe</a> which will not have a libintl2.dll
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700654 dependency.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700655 </li>
656 </ul>
J. Duke686d76f2007-12-01 00:00:00 +0000657 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800658 Information on GNU make, and access to ftp download sites, are
659 available on the
660 <a href="http://www.gnu.org/software/make/make.html" target="_blank">
661 GNU make web site
662 </a>.
663 The latest source to GNU make is available at
664 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
665 ftp.gnu.org/pub/gnu/make/</a>.
J. Duke686d76f2007-12-01 00:00:00 +0000666 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700667 <!-- ------------------------------------------------------ -->
668 <hr>
669 <h3><a name="linux">Basic Linux System Setup</a></h3>
670 <blockquote>
J. Duke686d76f2007-12-01 00:00:00 +0000671 <strong>i586 only:</strong>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700672 The minimum recommended hardware for building the Linux version
673 is a Pentium class processor or better, at least 256 MB of RAM, and
674 approximately 1.5 GB of free disk space.
J. Duke686d76f2007-12-01 00:00:00 +0000675 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800676 <strong>X64 only:</strong>
677 The minimum recommended hardware for building the Linux
678 version is an AMD Opteron class processor, at least 512 MB of RAM, and
679 approximately 4 GB of free disk space.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700680 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800681 The build will use the tools contained in
682 <tt>/bin</tt> and
683 <tt>/usr/bin</tt>
684 of a standard installation of the Linux operating environment.
685 You should ensure that these directories are in your
686 <tt>PATH</tt>.
J. Duke686d76f2007-12-01 00:00:00 +0000687 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800688 Note that some Linux systems have a habit of pre-populating
689 your environment variables for you, for example <tt>JAVA_HOME</tt>
690 might get pre-defined for you to refer to the JDK installed on
691 your Linux system.
692 You will need to unset <tt>JAVA_HOME</tt>.
693 It's a good idea to run <tt>env</tt> and verify the
694 environment variables you are getting from the default system
695 settings make sense for building the
696 OpenJDK.
J. Duke686d76f2007-12-01 00:00:00 +0000697 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700698 <!-- ------------------------------------------------------ -->
699 <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
700 <blockquote>
701 <ol>
702 <li>
703 Install the
704 <a href="#bootjdk">Bootstrap JDK</a>, set
705 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
706 </li>
707 <li>
708 Install the
709 <a href="#binaryplugs">Binary Plugs</a>, set
710 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
711 </li>
712 <li>
713 <a href="#importjdk">Optional Import JDK</a>, set
714 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
715 </li>
716 <li>
717 Install or upgrade the <a href="#freetype">FreeType development
Kelly O'Hair213481a2010-12-22 12:25:52 -0800718 package</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700719 </li>
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700720 <li>
721 Install
Kelly O'Haird03960122008-12-01 15:28:36 -0800722 <a href="#ant">Ant</a>,
723 make sure it is in your PATH.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700724 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700725 </ol>
726 </blockquote>
727 <!-- ------------------------------------------------------ -->
728 <hr>
729 <h3><a name="solaris">Basic Solaris System Setup</a></h3>
730 <blockquote>
731 The minimum recommended hardware for building the
732 Solaris SPARC version is an UltraSPARC with 512 MB of RAM.
733 For building
734 the Solaris x86 version, a Pentium class processor or better and at
735 least 512 MB of RAM are recommended.
736 Approximately 1.4 GB of free disk
737 space is needed for a 32-bit build.
738 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800739 If you are building the 64-bit version, you should
740 run the command "isainfo -v" to verify that you have a
741 64-bit installation, it should say <tt>sparcv9</tt> or
742 <tt>amd64</tt>.
743 An additional 7 GB of free disk space is needed
744 for a 64-bit build.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700745 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800746 The build uses the tools contained in <tt>/usr/ccs/bin</tt>
747 and <tt>/usr/bin</tt> of a standard developer or full installation of
748 the Solaris operating environment.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700749 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800750 Solaris patches specific to the JDK can be downloaded from the
751 <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
752 SunSolve JDK Solaris patches download page</a>.
753 You should ensure that the latest patch cluster for
754 your version of the Solaris operating environment has also
755 been installed.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700756 </blockquote>
757 <!-- ------------------------------------------------------ -->
758 <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
759 <blockquote>
760 <ol>
761 <li>
762 Install the
763 <a href="#bootjdk">Bootstrap JDK</a>, set
764 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
765 </li>
766 <li>
767 Install the
768 <a href="#binaryplugs">Binary Plugs</a>, set
769 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
770 </li>
771 <li>
772 <a href="#importjdk">Optional Import JDK</a>, set
773 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
774 </li>
775 <li>
776 Install the
777 <a href="#studio">Sun Studio Compilers</a>, set
J. Duke686d76f2007-12-01 00:00:00 +0000778 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700779 </li>
780 <li>
781 Install the
782 <a href="#cups">CUPS Include files</a>, set
783 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
784 </li>
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700785 <li>
Andrew John Hughese4d60712009-06-17 20:53:01 +0100786 Install the <a href="#xrender">XRender Include files</a>.
787 </li>
788 <li>
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700789 Install
Kelly O'Haird03960122008-12-01 15:28:36 -0800790 <a href="#ant">Ant</a>,
791 make sure it is in your PATH.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700792 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700793 </ol>
794 </blockquote>
795 <!-- ------------------------------------------------------ -->
796 <hr>
797 <h3><a name="windows">Basic Windows System Setup</a></h3>
798 <blockquote>
799 <strong>i586 only:</strong>
Kelly O'Haird03960122008-12-01 15:28:36 -0800800 The minimum recommended hardware for building the 32-bit or X86
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700801 Windows version is an Pentium class processor or better, at least
802 512 MB of RAM, and approximately 600 MB of free disk space.
803 <strong>
Kelly O'Haird03960122008-12-01 15:28:36 -0800804 NOTE: The Windows build machines need to use the
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700805 file system NTFS.
806 Build machines formatted to FAT32 will not work
807 because FAT32 doesn't support case-sensitivity in file names.
808 </strong>
809 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800810 <strong>X64 only:</strong>
811 The minimum recommended hardware for building
812 the Windows X64 version is an AMD Opteron class processor, at least 1
813 GB of RAM, and approximately 10 GB of free disk space.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700814 </blockquote>
815 <!-- ------------------------------------------------------ -->
816 <h4><a name="paths">Windows Paths</a></h4>
817 <blockquote>
818 <strong>Windows:</strong>
819 Note that GNU make is a historic utility and is based very
820 heavily on shell scripting, so it does not tolerate the Windows habit
821 of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
822 Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
823 there is always a 'short' pathname without spaces for any path that
824 contains spaces.
825 Unfortunately, this short pathname can be somewhat dynamic and the
826 formula is difficult to explain.
827 You can use <tt>cygpath</tt> utility to map pathnames with spaces
828 or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
829 (called 'mixed'), e.g.
830 <tt>cygpath -s -m "<i>path</i>"</tt>.
831 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800832 The makefiles will try to translate any pathnames supplied
833 to it into the <tt>C:/</tt> style automatically.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700834 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800835 Note that use of CYGWIN creates a unique problem with regards to
836 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
837 the <tt>PATH</tt> variable contains directories
838 separated with the ";" character (Solaris and Linux uses ":").
839 With CYGWIN, it uses ":", but that means that paths like "C:/path"
840 cannot be placed in the CYGWIN version of <tt>PATH</tt> and
841 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
842 which CYGWIN understands, but only CYGWIN understands.
843 So be careful with paths on Windows.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700844 </blockquote>
845 <!-- ------------------------------------------------------ -->
846 <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
847 <blockquote>
848 <ol>
849 <li>
850 Install the
851 <a href="#cygwin">CYGWIN product</a>.
852 </li>
853 <li>
854 Install the
855 <a href="#bootjdk">Bootstrap JDK</a>, set
856 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
857 </li>
858 <li>
859 Install the
860 <a href="#binaryplugs">Binary Plugs</a>, set
861 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
862 </li>
863 <li>
864 <a href="#importjdk">Optional Import JDK</a>, set
865 <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
866 </li>
867 <li>
868 Install the
Phil Race16f4bd82010-06-16 09:41:40 -0700869 <a href="#msvc32">Microsoft Visual Studio Compilers</a>).
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700870 </li>
871 <li>
872 Setup all environment variables for compilers
Phil Race16f4bd82010-06-16 09:41:40 -0700873 (see <a href="#msvc32">compilers</a>).
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700874 </li>
875 <li>
876 Install
877 <a href="#dxsdk">Microsoft DirectX SDK</a>.
878 </li>
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700879 <li>
880 Install
Kelly O'Haird03960122008-12-01 15:28:36 -0800881 <a href="#ant">Ant</a>,
882 make sure it is in your PATH and set
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700883 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
884 </li>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700885 </ol>
886 </blockquote>
887 <!-- ------------------------------------------------------ -->
888 <hr>
889 <h3><a name="dependencies">Build Dependencies</a></h3>
890 <blockquote>
891 Depending on the platform, the OpenJDK build process has some basic
892 dependencies on components not part of the OpenJDK sources.
893 Some of these are specific to a platform, some even specific to
894 an architecture.
895 Each dependency will have a set of ALT variables that can be set
896 to tell the makefiles where to locate the component.
897 In most cases setting these ALT variables may not be necessary
898 and the makefiles will find defaults on the system in standard
899 install locations or through component specific variables.
900 <!-- ------------------------------------------------------ -->
901 <h4><a name="bootjdk">Bootstrap JDK</a></h4>
J. Duke686d76f2007-12-01 00:00:00 +0000902 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700903 All OpenJDK builds require access to the previously released
904 JDK 6, this is often called a bootstrap JDK.
905 The JDK 6 binaries can be downloaded from Sun's
Kelly O'Hair4eb5fcb2009-10-28 13:44:30 -0700906 <a href="http://java.sun.com/javase/downloads/index.jsp"
Kelly O'Hair213481a2010-12-22 12:25:52 -0800907 target="_blank">JDK 6 download site</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700908 For build performance reasons
909 is very important that this bootstrap JDK be made available on the
910 local disk of the machine doing the build.
911 You should always set
912 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
913 to point to the location of
914 the bootstrap JDK installation, this is the directory pathname
915 that contains a <tt>bin, lib, and include</tt>
916 It's also a good idea to also place its <tt>bin</tt> directory
917 in the <tt>PATH</tt> environment variable, although it's
918 not required.
J. Duke686d76f2007-12-01 00:00:00 +0000919 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -0800920 <strong>Solaris:</strong>
921 Some pre-installed JDK images may be available to you in the
922 directory <tt>/usr/jdk/instances</tt>.
923 If you don't set
924 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
925 the makefiles will look in that location for a JDK it can use.
J. Duke686d76f2007-12-01 00:00:00 +0000926 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700927 <!-- ------------------------------------------------------ -->
928 <h4><a name="binaryplugs">Binary Plugs</a></h4>
J. Duke686d76f2007-12-01 00:00:00 +0000929 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700930 Not all of the source code that makes up the JDK is available
931 under an open-source license.
932 This is a temporary situation and these binary plugs will be
933 replaced with fully open source replacements as soon as possible.
934 So currently, in order to build a complete OpenJDK image,
935 you must first download and install the appropriate
936 binary plug bundles for the OpenJDK, go to the
937 <a href="http://openjdk.java.net" target="_blank">OpenJDK</a> site and select
Kelly O'Haird03960122008-12-01 15:28:36 -0800938 the
939 "<b>Bundles(7)</b>"
940 link and download the binaryplugs for
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700941 your particular platform.
942 The file downloaded is a jar file that must be extracted by running
943 the jar file with:
J. Duke686d76f2007-12-01 00:00:00 +0000944 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700945 <pre>
946 <tt><b>java -jar jdk-7-ea-plug-b<i>nn</i>-<i>os</i>-<i>arch</i>-<i>dd</i>_<i>month</i>_<i>year</i>.jar</b></tt>
947 </pre>
948 </blockquote>
949 A prompt will be issued for acceptance of these binary plug files.
950 During the OpenJDK build process these "binary plugs"
951 for the encumbered components will be copied into your
952 resulting OpenJDK binary build image.
953 These binary plug files are only for the purpose of
954 building an OpenJDK binary.
955 Make sure you set
956 <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
957 to the root of this installation.
958 </blockquote>
959 <!-- ------------------------------------------------------ -->
960 <h4><a name="importjdk">Optional Import JDK</a></h4>
961 <blockquote>
962 The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
963 setting is only needed if you are not building the entire
964 JDK. For example, if you have built the entire JDK once, and
965 wanted to avoid repeatedly building the Hotspot VM, you could
966 set this to the location of the previous JDK install image
967 and the build will copy the needed files from this import area.
968 </blockquote>
969 <!-- ------------------------------------------------------ -->
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700970 <h4><a name="ant">Ant</a></h4>
971 <blockquote>
972 All OpenJDK builds require access to least Ant 1.6.5.
973 The Ant tool is available from the
Kelly O'Haird90b02d2008-12-05 17:18:04 -0800974 <a href="http://ant.apache.org" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800975 Ant download site</a>.
Kelly O'Haird03960122008-12-01 15:28:36 -0800976 You should always make sure <tt>ant</tt> is in your PATH, and
977 on Windows you may also need to set
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700978 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
979 to point to the location of
980 the Ant installation, this is the directory pathname
981 that contains a <tt>bin and lib</tt>.
Kelly O'Hair634c79b2008-07-09 15:42:00 -0700982 </blockquote>
983 <!-- ------------------------------------------------------ -->
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700984 <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
985 <blockquote>
986 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -0800987 http://en.wikipedia.org/wiki/Certificate_Authority</a>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -0700988 for a better understanding of the Certificate Authority (CA).
989 A certificates file named "cacerts"
990 represents a system-wide keystore with CA certificates.
991 In JDK and JRE
992 binary bundles, the "cacerts" file contains root CA certificates from
993 several public CAs (e.g., VeriSign, Thawte, and Baltimore).
994 The source contain a cacerts file
995 without CA root certificates.
996 Formal JDK builders will need to secure
997 permission from each public CA and include the certificates into their
998 own custom cacerts file.
999 Failure to provide a populated cacerts file
1000 will result in verification errors of a certificate chain during runtime.
1001 The variable
1002 <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
1003 can be used to override the default location of the
1004 cacerts file that will get placed in your build.
1005 By default an empty cacerts file is provided and that should be
1006 fine for most JDK developers.
1007 </blockquote>
1008 <!-- ------------------------------------------------------ -->
1009 <h4><a name="compilers">Compilers</a></h4>
1010 <blockquote>
1011 <strong><a name="gcc">Linux gcc/binutils</a></strong>
1012 <blockquote>
Kelly O'Haird03960122008-12-01 15:28:36 -08001013 The GNU gcc compiler version should be 4 or newer.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001014 The compiler used should be the default compiler installed
1015 in <tt>/usr/bin</tt>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001016 </blockquote>
1017 <strong><a name="studio">Solaris: Sun Studio</a></strong>
1018 <blockquote>
1019 At a minimum, the
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001020 <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -08001021 Sun Studio 12 Update 1 Compilers</a>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001022 (containing version 5.10 of the C and C++ compilers) is required,
1023 including specific patches.
Kelly O'Hair213481a2010-12-22 12:25:52 -08001024 <p>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001025 The Solaris SPARC patch list is:
Kelly O'Hair213481a2010-12-22 12:25:52 -08001026 <ul>
1027 <li>
1028 118683-05: SunOS 5.10: Patch for profiling libraries and assembler
1029 </li>
1030 <li>
1031 119963-21: SunOS 5.10: Shared library patch for C++
1032 </li>
1033 <li>
1034 120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
1035 </li>
1036 <li>
1037 128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
1038 </li>
1039 <li>
1040 141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
1041 </li>
1042 <li>
1043 141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
1044 </li>
1045 <li>
1046 142371-01: Sun Studio 12.1 Update 1: Patch for dbx
1047 </li>
1048 <li>
1049 143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
1050 </li>
1051 <li>
1052 143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
1053 </li>
1054 <li>
1055 142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
1056 </li>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001057 </ul>
1058 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001059 The Solaris X86 patch list is:
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001060 <ul>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001061 <li>
1062 119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
1063 </li>
1064 <li>
1065 119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
1066 </li>
1067 <li>
1068 120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
1069 </li>
1070 <li>
1071 141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
1072 </li>
1073 <li>
1074 128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
1075 </li>
1076 <li>
1077 142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
1078 </li>
1079 <li>
1080 142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
1081 </li>
Kelly O'Hair9ed55ab2010-09-08 15:13:31 -07001082 </ul>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001083 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001084 Set
1085 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
1086 to point to the location of
1087 the compiler binaries, and place this location in the <tt>PATH</tt>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001088 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001089 The Oracle Solaris Studio Express compilers at:
1090 <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
1091 Oracle Solaris Studio Express Download site</a>
1092 are also an option, although these compilers have not
1093 been extensively used yet.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001094 </blockquote>
Phil Race16f4bd82010-06-16 09:41:40 -07001095 <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001096 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001097 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001098 <b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to
1099 use the newest VS2010 Microsoft compilers. These build instructions are updated
1100 to show where we are going. We have a QA process to go through before
1101 official builds actually use VS2010. So for now, official builds are
1102 still using VS2003. No other compilers are known to build the entire JDK,
1103 including non-open portions.
1104 So for now you should be able to build with either VS2003 or VS2010.
1105 We do not guarantee that VS2008 will work, although there is sufficient
1106 makefile support to make at least basic JDK builds plausible.
1107 Visual Studio 2010 Express compilers are now able to build all the
1108 open source repositories, but this is 32 bit only. To build 64 bit
1109 Windows binaries use the the 7.1 Windows SDK.<b>END WARNING.</b>
1110 <p>
1111 The 32-bit OpenJDK Windows build
1112 requires
1113 Microsoft Visual Studio C++ 2010 (VS2010) Professional
1114 Edition or Express compiler.
1115 The compiler and other tools are expected to reside
1116 in the location defined by the variable
1117 <tt>VS100COMNTOOLS</tt> which
1118 is set by the Microsoft Visual Studio installer.
1119 <p>
1120 Once the compiler is installed,
1121 it is recommended that you run <tt>VCVARS32.BAT</tt>
1122 to set the compiler environment variables
1123 <tt>INCLUDE</tt>,
1124 <tt>LIB</tt>, and
1125 <tt>PATH</tt>
1126 prior to building the
1127 OpenJDK.
1128 The above environment variables <b>MUST</b> be set.
1129 This compiler also contains the Windows SDK v 7.0a,
1130 which is an update to the Windows 7 SDK.
1131 <p>
1132 <b>WARNING:</b> Make sure you check out the
1133 <a href="#cygwin">CYGWIN link.exe WARNING</a>.
1134 The path <tt>/usr/bin</tt> must be after the path to the
1135 Visual Studio product.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001136 </blockquote>
Phil Race16f4bd82010-06-16 09:41:40 -07001137 <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001138 <blockquote>
Phil Race16f4bd82010-06-16 09:41:40 -07001139 For <b>X64</b>, builds, when using the VS2010 Professional
1140 compiler, the 64 bit build set up is much the same as 32 bit
Phil Racecd28ed52010-05-11 14:31:42 -07001141 except that you run <tt>amd64\VCVARS64.BAT</tt>
1142 to set the compiler environment variables.
Phil Race16f4bd82010-06-16 09:41:40 -07001143 Previously 64 bit builds had used the 64 bit compiler in
1144 an unbundled Windows SDK but this is no longer necessary if
1145 you have VS2010 Professional.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001146 </blockquote>
Phil Race16f4bd82010-06-16 09:41:40 -07001147 <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001148 For a free alternative for 64 bit builds, use the 7.1 SDK.
1149 Microsoft say that to set up your paths for this run
1150 <pre>
Phil Race16f4bd82010-06-16 09:41:40 -07001151 c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64.
Kelly O'Hair213481a2010-12-22 12:25:52 -08001152 </pre>
1153 What was tested is just directly setting up LIB, INCLUDE,
1154 PATH and based on the installation directories using the
1155 DOS short name appropriate for the system, (you will
1156 need to set them for yours, not just blindly copy this) eg :
1157 <pre>
Phil Race16f4bd82010-06-16 09:41:40 -07001158 set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0
1159 set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1
1160 set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH%
1161 set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include
1162 set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64
Kelly O'Hair213481a2010-12-22 12:25:52 -08001163 </pre>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001164 </blockquote>
1165 <!-- ------------------------------------------------------ -->
1166 <h4><a name="zip">Zip and Unzip</a></h4>
1167 <blockquote>
1168 Version 2.2 (November 3rd 1997) or newer of the zip utility
1169 and version 5.12 or newer of the unzip utility is needed
1170 to build the JDK.
1171 With Solaris, Linux, and Windows CYGWIN, the zip and unzip
1172 utilities installed on the system should be fine.
1173 Information and the source code for
1174 ZIP.EXE and UNZIP.EXE is available on the
1175 <a href="http://www.info-zip.org"
1176 target="_blank">info-zip web site</a>.
1177 </blockquote>
1178 <!-- ------------------------------------------------------ -->
1179 <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris &amp; Linux)</a></h4>
1180 <blockquote>
1181 <strong>Solaris:</strong>
1182 CUPS header files are required for building the
1183 OpenJDK on Solaris.
1184 The Solaris header files can be obtained by installing
1185 the package <strong>SFWcups</strong> from the Solaris Software
1186 Companion CD/DVD, these often will be installed into
1187 <tt>/opt/sfw/cups</tt>.
1188 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001189 <strong>Linux:</strong>
1190 CUPS header files are required for building the
1191 OpenJDK on Linux.
1192 The Linux header files are usually available from a "cups"
1193 development package, it's recommended that you try and use
1194 the package provided by the particular version of Linux that
1195 you are using.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001196 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001197 The CUPS header files can always be downloaded from
1198 <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
1199 The variable
1200 <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
1201 can be used to override the default location of the
1202 CUPS Header files.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001203 </blockquote>
1204 <!-- ------------------------------------------------------ -->
Andrew John Hughese4d60712009-06-17 20:53:01 +01001205 <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
1206 <blockquote>
1207 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001208 <strong>Solaris:</strong>
1209 XRender header files are required for building the
1210 OpenJDK on Solaris.
1211 The XRender header file is included with the other X11 header files
1212 in the package <strong>SFWxwinc</strong> on new enough versions of
1213 Solaris and will be installed in
1214 <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
Andrew John Hughese4d60712009-06-17 20:53:01 +01001215 </p><p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001216 <strong>Linux:</strong>
1217 XRender header files are required for building the
1218 OpenJDK on Linux.
1219 The Linux header files are usually available from a "Xrender"
1220 development package, it's recommended that you try and use
1221 the package provided by the particular distribution of Linux that
1222 you are using.
1223 </p>
Andrew John Hughese4d60712009-06-17 20:53:01 +01001224 </blockquote>
1225 <!-- ------------------------------------------------------ -->
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001226 <h4><a name="freetype">FreeType 2</a></h4>
1227 <blockquote>
1228 Version 2.3 or newer of FreeType is required for building the OpenJDK.
1229 On Unix systems required files can be available as part of your
1230 distribution (while you still may need to upgrade them).
1231 Note that you need development version of package that
1232 includes both FreeType library and header files.
1233 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001234 You can always download latest FreeType version from the
1235 <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001236 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001237 Makefiles will try to pick FreeType from /usr/lib and /usr/include.
1238 In case it is installed elsewhere you will need to set environment
1239 variables
1240 <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
1241 and
1242 <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
1243 to refer to place where library and header files are installed.
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001244 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001245 Building the freetype 2 libraries from scratch is also possible,
1246 however on Windows refer to the
1247 <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
1248 Windows FreeType DLL build instructions</a>.
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001249 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001250 Note that by default FreeType is built with byte code hinting
1251 support disabled due to licensing restrictions.
1252 In this case, text appearance and metrics are expected to
1253 differ from Sun's official JDK build.
1254 See
1255 <a href="http://freetype.sourceforge.net/freetype2/index.html">
1256 the SourceForge FreeType2 Home Page
1257 </a>
1258 for more information.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001259 </blockquote>
1260 <!-- ------------------------------------------------------ -->
1261 <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
1262 <blockquote>
1263 <strong>Linux only:</strong>
1264 Version 0.9.1 or newer of the ALSA files are
1265 required for building the OpenJDK on Linux.
1266 These Linux files are usually available from an "alsa"
1267 of "libasound"
1268 development package, it's highly recommended that you try and use
1269 the package provided by the particular version of Linux that
1270 you are using.
1271 The makefiles will check this emit a sanity error if it is
1272 missing or the wrong version.
1273 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001274 In particular, older Linux systems will likely not have the
1275 right version of ALSA installed, for example
1276 Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
1277 recent ALSA distribution.
1278 On rpm-based systems, you can see if ALSA is installed by
1279 running this command:
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001280 <pre>
1281 <tt>rpm -qa | grep alsa</tt>
1282 </pre>
1283 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
1284 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001285 If your distribution does not come with ALSA, and you can't
1286 find ALSA packages built for your particular system,
1287 you can try to install the pre-built ALSA rpm packages from
1288 <a href="http://www.freshrpms.net/" target="_blank">
1289 <tt>www.freshrpms.net</tt></a>.
1290 Note that installing a newer ALSA could
1291 break sound output if an older version of ALSA was previously
1292 installed on the system, but it will enable JDK compilation.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001293 <blockquote>
1294 Installation: execute as root<br>
1295 [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
1296 [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
1297 Uninstallation:<br>
1298 [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
1299 [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
1300 Make sure that you do not link to the static library
1301 (<tt>libasound.a</tt>),
1302 by verifying that the dynamic library (<tt>libasound.so</tt>) is
1303 correctly installed in <tt>/usr/lib</tt>.
1304 </blockquote>
1305 As a last resort you can go to the
1306 <a href="http://www.alsa-project.org" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -08001307 Advanced Linux Sound Architecture Site</a> and build it from
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001308 source.
1309 <blockquote>
1310 Download driver and library
1311 source tarballs from
1312 <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>.
1313 As root, execute the following
1314 commands (you may need to adapt the version number):
1315 <pre>
1316 <tt>
1317 $ tar xjf alsa-driver-0.9.1.tar.bz2
1318 $ cd alsa-driver-0.9.1
1319 $ ./configure
1320 $ make install
1321 $ cd ..
1322 $ tar xjf alsa-lib-0.9.1.tar.bz2
1323 $ cd alsa-lib-0.9.1
1324 $ ./configure
1325 $ make install
1326 </tt>
1327 </pre>
1328 Should one of the above steps fail, refer to the documentation on
1329 ALSA's home page.
1330 </blockquote>
1331 Note that this is a minimum install that enables
1332 building the JDK platform. To actually use ALSA sound drivers, more
1333 steps are necessary as outlined in the documentation on ALSA's homepage.
1334 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001335 ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
1336 the <tt>alsa-lib-0.9.1</tt> directory and then in
1337 <tt>alsa-driver-0.9.1</tt>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001338 </blockquote>
1339 There are no ALT* variables to change the assumed locations of ALSA,
1340 the makefiles will expect to find the ALSA include files and library at:
1341 <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
1342 </blockquote>
1343 <!-- ------------------------------------------------------ -->
1344 <h4>Windows Specific Dependencies</h4>
1345 <blockquote>
1346 <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
1347 <blockquote>
1348 The OpenJDK requires access to a set of unix command tools
1349 on Windows which can be supplied by
1350 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>.
1351 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001352 The OpenJDK build requires CYGWIN version 1.5.12 or newer.
1353 Information about CYGWIN can
1354 be obtained from the CYGWIN website at
1355 <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001356 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001357 By default CYGWIN doesn't install all the tools required for building
1358 the OpenJDK.
1359 Along with the default installation, you need to install
1360 the following tools.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001361 <blockquote>
1362 <table border="1">
1363 <thead>
1364 <tr>
1365 <td>Binary Name</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001366 <td>Category</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001367 <td>Package</td>
1368 <td>Description</td>
1369 </tr>
1370 </thead>
1371 <tbody>
1372 <tr>
1373 <td>ar.exe</td>
1374 <td>Devel</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001375 <td>binutils</td>
1376 <td>The GNU assembler, linker and binary
Kelly O'Hair213481a2010-12-22 12:25:52 -08001377 utilities</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001378 </tr>
1379 <tr>
1380 <td>make.exe</td>
1381 <td>Devel</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001382 <td>make</td>
1383 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001384 <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001385 </tr>
1386 <tr>
1387 <td>m4.exe</td>
1388 <td>Interpreters</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001389 <td>m4</td>
1390 <td>GNU implementation of the traditional Unix macro
Kelly O'Hair213481a2010-12-22 12:25:52 -08001391 processor</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001392 </tr>
1393 <tr>
1394 <td>cpio.exe</td>
1395 <td>Utils</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001396 <td>cpio</td>
1397 <td>A program to manage archives of files</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001398 </tr>
1399 <tr>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001400 <td>gawk.exe</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001401 <td>Utils</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001402 <td>awk</td>
1403 <td>Pattern-directed scanning and processing language</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001404 </tr>
1405 <tr>
1406 <td>file.exe</td>
1407 <td>Utils</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001408 <td>file</td>
1409 <td>Determines file type using 'magic' numbers</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001410 </tr>
1411 <tr>
1412 <td>zip.exe</td>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001413 <td>Archive</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001414 <td>zip</td>
1415 <td>Package and compress (archive) files</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001416 </tr>
1417 <tr>
1418 <td>unzip.exe</td>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001419 <td>Archive</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001420 <td>unzip</td>
1421 <td>Extract compressed files in a ZIP archive</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001422 </tr>
1423 <tr>
1424 <td>free.exe</td>
Kelly O'Hair2928b812008-09-17 13:30:32 -07001425 <td>System</td>
1426 <td>procps</td>
1427 <td>Display amount of free and used memory in the system</td>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001428 </tr>
1429 </tbody>
1430 </table>
J. Duke686d76f2007-12-01 00:00:00 +00001431 </blockquote>
1432 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001433 Note that the CYGWIN software can conflict with other non-CYGWIN
1434 software on your Windows system.
1435 CYGWIN provides a
1436 <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
1437 known issues and problems, of particular interest is the
1438 section on
1439 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
1440 BLODA (applications that interfere with CYGWIN)</a>.
Kelly O'Hair2928b812008-09-17 13:30:32 -07001441 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001442 <b>WARNING:</b>
1443 Be very careful with <b><tt>link.exe</tt></b>, it will conflict
1444 with the Visual Studio version. You need the Visual Studio
1445 version of <tt>link.exe</tt>, not the CYGWIN one.
1446 So it's important that the Visual Studio paths in PATH preceed
1447 the CYGWIN path <tt>/usr/bin</tt>.
J. Duke686d76f2007-12-01 00:00:00 +00001448 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001449 <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
J. Duke686d76f2007-12-01 00:00:00 +00001450 <blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001451 Microsoft DirectX 9.0 SDK (Summer 2004)
1452 headers are required for building
1453 OpenJDK.
1454 This SDK can be downloaded from
1455 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -08001456 Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001457 If the link above becomes obsolete, the SDK can be found from
1458 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
1459 (search with "DirectX 9.0 SDK Update Summer 2004").
1460 The location of this SDK can be set with
1461 <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
1462 but it's normally found via the DirectX environment variable
1463 <tt>DXSDK_DIR</tt>.
J. Duke686d76f2007-12-01 00:00:00 +00001464 </blockquote>
Phil Racecd28ed52010-05-11 14:31:42 -07001465 <strong><a name="msvcrt"><tt>MSVCR100.DLL</tt></a></strong>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001466 <blockquote>
Phil Racecd28ed52010-05-11 14:31:42 -07001467 The OpenJDK build requires access to a redistributable
1468 <tt>MSVCR100.DLL</tt>.
1469 This is usually picked up automatically from the redist
1470 directories of Visual Studio 2010.
1471 If this cannot be found set the
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001472 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
Kelly O'Haird03960122008-12-01 15:28:36 -08001473 variable to the location of this file.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001474 <p>
J. Duke686d76f2007-12-01 00:00:00 +00001475 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001476 </blockquote>
1477 <!-- ------------------------------------------------------ -->
1478 <hr>
1479 <h2><a name="creating">Creating the Build</a></h2>
1480 <blockquote>
1481 Once a machine is setup to build the OpenJDK,
1482 the steps to create the build are fairly simple.
1483 The various ALT settings can either be made into variables
1484 or can be supplied on the
1485 <a href="#gmake"><tt><i>gmake</i></tt></a>
1486 command.
1487 <ol>
1488 <li>Use the sanity rule to double check all the ALT settings:
1489 <blockquote>
1490 <tt>
1491 <i>gmake</i>
1492 sanity
1493 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1494 [other "ALT_" overrides]
1495 </tt>
1496 </blockquote>
1497 </li>
1498 <li>Start the build with the command:
1499 <blockquote>
1500 <tt>
1501 <i>gmake</i>
1502 [ARCH_DATA_MODEL=<i>32 or 64</i>]
1503 [ALT_OUTPUTDIR=<i>output_directory</i>]
1504 [other "ALT_" overrides]
1505 </tt>
1506 </blockquote>
1507 </li>
1508 </ol>
1509 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001510 <strong>Solaris:</strong>
1511 Note that ARCH_DATA_MODEL is really only needed on Solaris to
1512 indicate you want to built the 64-bit version.
1513 And before the Solaris 64-bit binaries can be used, they
1514 must be merged with the binaries from a separate 32-bit build.
1515 The merged binaries may then be used in either 32-bit or 64-bit mode, with
1516 the selection occurring at runtime
1517 with the <tt>-d32</tt> or <tt>-d64</tt> options.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001518 </blockquote>
1519 <!-- ------------------------------------------------------ -->
1520 <hr>
1521 <h2><a name="testing">Testing the Build</a></h2>
1522 <blockquote>
1523 When the build is completed, you should see the generated
1524 binaries and associated files in the <tt>j2sdk-image</tt>
1525 directory in the output directory.
1526 The default output directory is
1527 <tt>build/<i>platform</i></tt>,
1528 where <tt><i>platform</i></tt> is one of
Kelly O'Hair213481a2010-12-22 12:25:52 -08001529 <blockquote>
1530 <ul>
1531 <li><tt>solaris-sparc</tt></li>
1532 <li><tt>solaris-sparcv9</tt></li>
1533 <li><tt>solaris-i586</tt></li>
1534 <li><tt>solaris-amd64</tt></li>
1535 <li><tt>linux-i586</tt></li>
1536 <li><tt>linux-amd64</tt></li>
1537 <li><tt>windows-i586</tt></li>
1538 <li><tt>windows-amd64</tt></li>
1539 </ul>
1540 </blockquote>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001541 In particular, the
1542 <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
1543 directory should contain executables for the
1544 OpenJDK tools and utilities.
1545 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001546 You can test that the build completed properly by using the build
1547 to run the various demos that you will find in the
1548 <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
1549 directory.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001550 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001551 The provided regression tests can be run with the <tt>jtreg</tt>
1552 utility from
1553 <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001554 </blockquote>
1555 <!-- ------------------------------------------------------ -->
1556 <hr>
1557 <h2><a name="variables">Environment/Make Variables</a></h2>
1558 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001559 Some of the
1560 environment or make variables (just called <b>variables</b> in this
1561 document) that can impact the build are:
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001562 <blockquote>
1563 <dl>
Kelly O'Haird03960122008-12-01 15:28:36 -08001564 <dt><a name="path"><tt>PATH</tt></a> </dt>
1565 <dd>Typically you want to set the <tt>PATH</tt> to include:
1566 <ul>
1567 <li>The location of the GNU make binary</li>
1568 <li>The location of the Bootstrap JDK <tt>java</tt>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001569 (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
Kelly O'Haird03960122008-12-01 15:28:36 -08001570 <li>The location of the C/C++ compilers
Kelly O'Hair213481a2010-12-22 12:25:52 -08001571 (see <a href="#compilers"><tt>compilers</tt></a>)</li>
Kelly O'Haird03960122008-12-01 15:28:36 -08001572 <li>The location or locations for the Unix command utilities
Kelly O'Hair213481a2010-12-22 12:25:52 -08001573 (e.g. <tt>/usr/bin</tt>)</li>
Kelly O'Haird03960122008-12-01 15:28:36 -08001574 </ul>
1575 </dd>
1576 <dt><tt>MILESTONE</tt> </dt>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001577 <dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001578 The milestone name for the build (<i>e.g.</i>"beta").
1579 The default value is "internal".
1580 </dd>
1581 <dt><tt>BUILD_NUMBER</tt> </dt>
1582 <dd>
1583 The build number for the build (<i>e.g.</i> "b27").
1584 The default value is "b00".
1585 </dd>
1586 <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
1587 <dd>The <tt>ARCH_DATA_MODEL</tt> variable
1588 is used to specify whether the build is to generate 32-bit or 64-bit
1589 binaries.
1590 The Solaris build supports either 32-bit or 64-bit builds, but
1591 Windows and Linux will support only one, depending on the specific
1592 OS being used.
1593 Normally, setting this variable is only necessary on Solaris.
1594 Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
1595 or to <tt>64</tt> for generating 64-bit binaries.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001596 </dd>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001597 <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001598 <dd>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001599 The location of the bootstrap JDK installation.
1600 See <a href="#bootjdk">Bootstrap JDK</a> for more information.
1601 You should always install your own local Bootstrap JDK and
1602 always set <tt>ALT_BOOTDIR</tt> explicitly.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001603 </dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001604 <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001605 <dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001606 The location of the binary plugs installation.
1607 See <a href="#binaryplugs">Binary Plugs</a> for more information.
1608 You should always have a local copy of a
1609 recent Binary Plugs install image
1610 and set this variable to that location.
1611 </dd>
1612 <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
1613 <dd>
1614 The location of a previously built JDK installation.
1615 See <a href="#importjdk">Optional Import JDK</a> for more information.
1616 </dd>
1617 <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
1618 <dd>
1619 An override for specifying the (absolute) path of where the
1620 build output is to go.
1621 The default output directory will be build/<i>platform</i>.
1622 </dd>
1623 <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
1624 <dd>
1625 The location of the C/C++ compiler.
1626 The default varies depending on the platform.
1627 </dd>
1628 <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
1629 <dd>
1630 The location of the <a href="#cacerts">cacerts</a> file.
1631 The default will refer to
1632 <tt>jdk/src/share/lib/security/cacerts</tt>.
1633 </dd>
1634 <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
1635 <dd>
1636 The location of the CUPS header files.
1637 See <a href="#cups">CUPS information</a> for more information.
1638 If this path does not exist the fallback path is
1639 <tt>/usr/include</tt>.
1640 </dd>
1641 <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
1642 <dd>
1643 The location of the FreeType shared library.
1644 See <a href="#freetype">FreeType information</a> for details.
1645 </dd>
1646 <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
1647 <dd>
1648 The location of the FreeType header files.
1649 See <a href="#freetype">FreeType information</a> for details.
1650 </dd>
1651 <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
1652 <dd>
1653 The default root location of the devtools.
1654 The default value is
1655 <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
1656 </dd>
1657 <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
1658 <dd>
1659 The location of tools like the
1660 <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
1661 binaries, but might also contain the GNU make utility
1662 (<tt><i>gmake</i></tt>).
1663 So this area is a bit of a grab bag, especially on Windows.
1664 The default value depends on the platform and
1665 Unix Commands being used.
1666 On Linux the default will be
1667 <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>,
1668 on Solaris
1669 <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>,
1670 and on Windows with CYGWIN
1671 <tt>/usr/bin</tt>.
1672 </dd>
1673 <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
1674 <dd>
1675 <strong>Solaris only:</strong>
1676 An override for specifying where the Unix CCS
1677 command set are located.
1678 The default location is <tt>/usr/ccs/bin</tt>
1679 </dd>
1680 <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
1681 <dd>
1682 The default root location for many of the ALT path locations
1683 of the following ALT variables.
1684 The default value is
1685 <tt>"/java"</tt> on Solaris and Linux,
1686 <tt>"J:"</tt> on Windows.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001687 </dd>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001688 <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 -07001689 <dd>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001690 These are useful in managing builds on multiple platforms.
1691 The default network location for all of the import JDK images
1692 for all platforms.
1693 If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
1694 is not set, this directory will be used and should contain
1695 the following directories:
1696 <tt>solaris-sparc</tt>,
1697 <tt>solaris-i586</tt>,
1698 <tt>solaris-sparcv9</tt>,
1699 <tt>solaris-amd64</tt>,
1700 <tt>linux-i586</tt>,
1701 <tt>linux-amd64</tt>,
1702 <tt>windows-i586</tt>,
1703 and
1704 <tt>windows-amd64</tt>.
1705 Where each of these directories contain the import JDK image
1706 for that platform.
1707 </dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001708 <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 -07001709 <dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001710 These are useful in managing builds on multiple platforms.
1711 The default network location for all of the binary plug images
1712 for all platforms.
1713 If <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
1714 is not set, this directory will be used and should contain
1715 the following directories:
1716 <tt>solaris-sparc</tt>,
1717 <tt>solaris-i586</tt>,
1718 <tt>solaris-sparcv9</tt>,
1719 <tt>solaris-amd64</tt>,
1720 <tt>linux-i586</tt>,
1721 <tt>linux-amd64</tt>,
1722 <tt>windows-i586</tt>,
1723 and
1724 <tt>windows-amd64</tt>.
1725 Where each of these directories contain the binary plugs image
1726 for that platform.
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001727 </dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001728 <dt><strong>Windows specific:</strong></dt>
Kelly O'Hair634c79b2008-07-09 15:42:00 -07001729 <dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001730 <dl>
1731 <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
1732 <dd>
1733 The location of the
1734 Microsoft Visual Studio
1735 tools 'bin' directory.
1736 The default is usually derived from
1737 <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
1738 </dd>
1739 <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
1740 <dd>
1741 The location of the
1742 <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
1743 The default will be to try and use the DirectX environment
1744 variable <tt>DXSDK_DIR</tt>,
1745 failing that, look in <tt>C:/DXSDK</tt>.
1746 </dd>
1747 <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
1748 <dd>
1749 The location of the
1750 <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>.
1751 </dd>
Phil Racecd28ed52010-05-11 14:31:42 -07001752 <dt><tt><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt>
Kelly O'Haird03960122008-12-01 15:28:36 -08001753 <dd>
Kelly O'Haird03960122008-12-01 15:28:36 -08001754 The location of the
Phil Racecd28ed52010-05-11 14:31:42 -07001755 <a href="#msvcrt"><tt>MSVCR100.DLL</tt></a>.
Kelly O'Haird03960122008-12-01 15:28:36 -08001756 </dd>
1757 </dl>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001758 </dd>
1759 </dl>
1760 </blockquote>
1761 <!-- ------------------------------------------------------ -->
1762 <hr>
1763 <h2><a name="troubleshooting">Troubleshooting</a></h2>
1764 <blockquote>
1765 A build can fail for any number of reasons.
1766 Most failures
1767 are a result of trying to build in an environment in which all the
1768 pre-build requirements have not been met.
1769 The first step in
1770 troubleshooting a build failure is to recheck that you have satisfied
1771 all the pre-build requirements for your platform.
1772 Look for the check list of the platform you are building on in the
1773 <a href="#contents">Table of Contents</a>.
1774 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001775 You can validate your build environment by using the <tt>sanity</tt>
1776 target.
1777 Any errors listed
1778 will stop the build from starting, and any warnings may result in
1779 a flawed product build.
1780 We strongly encourage you to evaluate every
1781 sanity check warning and fix it if required, before you proceed
1782 further with your build.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001783 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001784 Some of the more common problems with builds are briefly described
1785 below, with suggestions for remedies.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001786 <ul>
1787 <li>
1788 <b>Slow Builds:</b>
1789 <blockquote>
1790 If your build machine seems to be overloaded from too many
1791 simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
1792 variable to <tt>1</tt> (if you're using a multiple CPU
1793 machine, setting it to more than the the number of CPUs is probably
1794 not a good idea).
1795 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001796 Creating the javadocs can be very slow, if you are running
1797 javadoc, consider skipping that step.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001798 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001799 Faster hardware and more RAM always helps too.
1800 The VM build tends to be CPU intensive (many C++ compiles),
1801 and the rest of the JDK will often be disk intensive.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001802 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001803 Faster compiles are possible using a tool called
1804 <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001805 </blockquote>
1806 </li>
1807 <li>
1808 <b>File time issues:</b>
1809 <blockquote>
1810 If you see warnings that refer to file time stamps, e.g.
1811 <blockquote>
1812 <i>Warning message:</i><tt> File `xxx' has modification time in
Kelly O'Hair213481a2010-12-22 12:25:52 -08001813 the future.</tt>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001814 <br>
1815 <i>Warning message:</i> <tt> Clock skew detected. Your build may
Kelly O'Hair213481a2010-12-22 12:25:52 -08001816 be incomplete.</tt>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001817 </blockquote>
1818 These warnings can occur when the clock on the build machine is out of
1819 sync with the timestamps on the source files. Other errors, apparently
1820 unrelated but in fact caused by the clock skew, can occur along with
1821 the clock skew warnings. These secondary errors may tend to obscure the
1822 fact that the true root cause of the problem is an out-of-sync clock.
1823 For example, an out-of-sync clock has been known to cause an old
1824 version of javac to be used to compile some files, resulting in errors
1825 when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
1826 in the 1.4 source code.
1827 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001828 If you see these warnings, reset the clock on the build
1829 machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
1830 containing the build output, and restart the build from the beginning.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001831 </blockquote>
1832 </li>
1833 <li>
1834 <b>Error message: <tt>Trouble writing out table to disk</tt></b>
1835 <blockquote>
1836 Increase the amount of swap space on your build machine.
1837 </blockquote>
1838 </li>
1839 <li>
1840 <b>Error Message: <tt>libstdc++ not found:</tt></b>
1841 <blockquote>
1842 This is caused by a missing libstdc++.a library.
1843 This is installed as part of a specific package
1844 (e.g. libstdc++.so.devel.386).
Kelly O'Haird03960122008-12-01 15:28:36 -08001845 By default some 64-bit Linux versions (e.g. Fedora)
1846 only install the 64-bit version of the libstdc++ package.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001847 Various parts of the JDK build require a static
1848 link of the C++ runtime libraries to allow for maximum
1849 portability of the built images.
1850 </blockquote>
1851 </li>
1852 <li>
1853 <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
1854 <blockquote>
1855 This is probably an issue with SELinux (See
1856 <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -08001857 http://en.wikipedia.org/wiki/SELinux</a>).
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001858 Parts of the VM is built without the <tt>-fPIC</tt> for
1859 performance reasons.
1860 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001861 To completely disable SELinux:
1862 <ol>
1863 <li><tt>$ su root</tt></li>
1864 <li><tt># system-config-securitylevel</tt></li>
1865 <li><tt>In the window that appears, select the SELinux tab</tt></li>
1866 <li><tt>Disable SELinux</tt></li>
1867 </ol>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001868 <p>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001869 Alternatively, instead of completely disabling it you could
1870 disable just this one check.
1871 <ol>
1872 <li>Select System->Administration->SELinux Management</li>
1873 <li>In the SELinux Management Tool which appears,
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001874 select "Boolean" from the menu on the left</li>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001875 <li>Expand the "Memory Protection" group</li>
1876 <li>Check the first item, labeled
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001877 "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
Kelly O'Hair213481a2010-12-22 12:25:52 -08001878 </ol>
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001879 </blockquote>
1880 </li>
1881 <li>
1882 <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b>
1883 <blockquote>
1884 The CYGWIN software can conflict with other non-CYGWIN
1885 software. See the CYGWIN FAQ section on
1886 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
Kelly O'Hair213481a2010-12-22 12:25:52 -08001887 BLODA (applications that interfere with CYGWIN)</a>.
Kelly O'Hairbf8a41a2008-04-30 19:35:26 -07001888 </blockquote>
1889 </li>
1890 <li>
1891 <b>Windows Error Message: <tt>*** multiple target patterns. Stop.</tt></b>
1892 <blockquote>
1893 The CYGWIN make version 3.81 may not like the Windows <tt>C:/</tt>
1894 style paths, it may not like the ':' character in the path
1895 when used in a makefile target definition.
1896 See the <a href="#gmake"><tt><i>gmake</i></tt></a> section.
1897 </blockquote>
1898 </li>
1899 </ul>
1900 </blockquote>
1901 <hr>
1902 </body>
1903</html>