152 <br> |
152 <br> |
153 bash ./get_source.sh |
153 bash ./get_source.sh |
154 </code> |
154 </code> |
155 </blockquote> |
155 </blockquote> |
156 Once you have all the repositories, keep in mind that each |
156 Once you have all the repositories, keep in mind that each |
157 repository is it's own independent repository. |
157 repository is its own independent repository. |
158 You can also re-run <code>./get_source.sh</code> anytime to |
158 You can also re-run <code>./get_source.sh</code> anytime to |
159 pull over all the latest changesets in all the repositories. |
159 pull over all the latest changesets in all the repositories. |
160 This set of nested repositories has been given the term |
160 This set of nested repositories has been given the term |
161 "forest" and there are various ways to apply the same |
161 "forest" and there are various ways to apply the same |
162 <code>hg</code> command to each of the repositories. |
162 <code>hg</code> command to each of the repositories. |
384 If <code>configure</code> has any issues finding this JDK, you may |
392 If <code>configure</code> has any issues finding this JDK, you may |
385 need to use the <code>configure</code> option |
393 need to use the <code>configure</code> option |
386 <code>--with-boot-jdk</code>. |
394 <code>--with-boot-jdk</code>. |
387 </li> |
395 </li> |
388 <li> |
396 <li> |
389 Insure that GNU make, the Bootstrap JDK, |
397 Ensure that GNU make, the Bootstrap JDK, |
390 and the compilers are all |
398 and the compilers are all |
391 in your PATH environment variable |
399 in your PATH environment variable |
392 </li> |
400 </li> |
393 </ul> |
401 </ul> |
394 And for specific systems: |
402 And for specific systems: |
1200 |
1208 |
1201 <h3><a name="faq">FAQ</a></h3> |
1209 <h3><a name="faq">FAQ</a></h3> |
1202 <blockquote> |
1210 <blockquote> |
1203 |
1211 |
1204 <p> |
1212 <p> |
1205 <b>Q:</b> The <code>configure</code> file looks horrible! |
1213 <b>Q:</b> The <code>generated-configure.sh</code> file looks horrible! |
1206 How are you going to edit it? |
1214 How are you going to edit it? |
1207 <br> |
1215 <br> |
1208 <b>A:</b> The <code>configure</code> file is generated (think |
1216 <b>A:</b> The <code>generated-configure.sh</code> file is generated (think |
1209 "compiled") by the autoconf tools. The source code is |
1217 "compiled") by the autoconf tools. The source code is |
1210 in <code>configure.ac</code> various .m4 files in common/autoconf, |
1218 in <code>configure.ac</code> and various .m4 files in common/autoconf, |
1211 which are |
1219 which are much more readable. |
1212 much more readable. |
|
1213 </p> |
1220 </p> |
1214 |
1221 |
1215 <p> |
1222 <p> |
1216 <b>Q:</b> |
1223 <b>Q:</b> |
1217 Why is the <code>configure</code> file checked in, |
1224 Why is the <code>generated-configure.sh</code> file checked in, |
1218 if it is generated? |
1225 if it is generated? |
1219 <br> |
1226 <br> |
1220 <b>A:</b> |
1227 <b>A:</b> |
1221 If it was not generated, every user would need to have the autoconf |
1228 If it was not generated, every user would need to have the autoconf |
1222 tools installed, and re-generate the <code>configure</code> file |
1229 tools installed, and re-generate the <code>configure</code> file |
1227 </p> |
1234 </p> |
1228 |
1235 |
1229 <p> |
1236 <p> |
1230 <b>Q:</b> |
1237 <b>Q:</b> |
1231 Do you require a specific version of autoconf for regenerating |
1238 Do you require a specific version of autoconf for regenerating |
1232 <code>configure</code>? |
1239 <code>generated-configure.sh</code>? |
1233 <br> |
1240 <br> |
1234 <b>A:</b> |
1241 <b>A:</b> |
1235 Currently, no, but this will likely be the case when things have |
1242 Yes, version 2.69 is required and should be easy |
1236 settled down a bit more. (The reason for this is to avoid |
1243 enough to aquire on all supported operating |
1237 large spurious changes in <code>configure</code> |
1244 systems. The reason for this is to avoid |
1238 in commits that made small changes to <code>configure.ac</code>). |
1245 large spurious changes in <code>generated-configure.sh</code>. |
|
1246 </p> |
|
1247 |
|
1248 <p> |
|
1249 <b>Q:</b> |
|
1250 How do you regenerate <code>generated-configure.sh</code> |
|
1251 after making changes to the input files? |
|
1252 <br> |
|
1253 <b>A:</b> |
|
1254 Regnerating <code>generated-configure.sh</code> |
|
1255 should always be done using the |
|
1256 script <code>common/autoconf/autogen.sh</code> to |
|
1257 ensure that the correct files get updated. This |
|
1258 script should also be run after mercurial tries to |
|
1259 merge <code>generated-configure.sh</code> as a |
|
1260 merge of the generated file is not guaranteed to |
|
1261 be correct. |
1239 </p> |
1262 </p> |
1240 |
1263 |
1241 <p> |
1264 <p> |
1242 <b>Q:</b> |
1265 <b>Q:</b> |
1243 What are the files in <code>common/makefiles/support/*</code> for? |
1266 What are the files in <code>common/makefiles/support/*</code> for? |
1305 Normally, no. If you want to create e.g. a new native |
1328 Normally, no. If you want to create e.g. a new native |
1306 library, |
1329 library, |
1307 you will need to modify the makefiles. But for normal file |
1330 you will need to modify the makefiles. But for normal file |
1308 additions or removals, no changes are needed. There are certan |
1331 additions or removals, no changes are needed. There are certan |
1309 exceptions for some native libraries where the source files are spread |
1332 exceptions for some native libraries where the source files are spread |
1310 over many directories which also contain courses for other |
1333 over many directories which also contain sources for other |
1311 libraries. In these cases it was simply easier to create include lists |
1334 libraries. In these cases it was simply easier to create include lists |
1312 rather thane excludes. |
1335 rather than excludes. |
1313 </p> |
1336 </p> |
1314 |
1337 |
1315 <p> |
1338 <p> |
1316 <b>Q:</b> |
1339 <b>Q:</b> |
1317 When I run <code>configure --help</code>, I see many strange options, |
1340 When I run <code>configure --help</code>, I see many strange options, |
1325 </p> |
1348 </p> |
1326 |
1349 |
1327 <p> |
1350 <p> |
1328 <b>Q:</b> |
1351 <b>Q:</b> |
1329 <code>configure</code> provides OpenJDK-specific features such as |
1352 <code>configure</code> provides OpenJDK-specific features such as |
1330 <code>--enable-jigsaw</code> or <code>--with-builddeps-server</code> |
1353 <code>--with-builddeps-server</code> that are not |
1331 that are not described in this document. What about those? |
1354 described in this document. What about those? |
1332 <br> |
1355 <br> |
1333 <b>A:</b> |
1356 <b>A:</b> |
1334 Try them out if you like! But be aware that most of these are |
1357 Try them out if you like! But be aware that most of these are |
1335 experimental features. |
1358 experimental features. |
1336 Many of them don't do anything at all at the moment; the option |
1359 Many of them don't do anything at all at the moment; the option |
1337 is just a placeholder. Other depends on |
1360 is just a placeholder. Others depend on |
1338 pieces of code or infrastructure that is currently |
1361 pieces of code or infrastructure that is currently |
1339 not ready for prime time. |
1362 not ready for prime time. |
1340 </p> |
1363 </p> |
1341 |
1364 |
1342 <p> |
1365 <p> |
1381 Yes! The new build system has grown bit by bit as we converted |
1404 Yes! The new build system has grown bit by bit as we converted |
1382 the old system. When all of the old build system is converted, |
1405 the old system. When all of the old build system is converted, |
1383 we can take a step back and clean up the structure of the new build |
1406 we can take a step back and clean up the structure of the new build |
1384 system. Some of this we plan to do before replacing the old build |
1407 system. Some of this we plan to do before replacing the old build |
1385 system and some will need to wait until after. |
1408 system and some will need to wait until after. |
1386 </p> |
|
1387 |
|
1388 <p> |
|
1389 <b>Q:</b> What is @GenerateNativeHeaders? |
|
1390 <br> |
|
1391 <b>A:</b> |
|
1392 To speed up compilation, we added a flag to javac which makes it |
|
1393 do the job of javah as well, as a by-product; that is, generating |
|
1394 native .h header files. These files are only generated |
|
1395 if a class contains native methods. However, sometimes |
|
1396 a class contains no native method, |
|
1397 but still contains constants that native code needs to use. |
|
1398 The new GenerateNativeHeaders annotation tells javac to |
|
1399 force generation of a |
|
1400 header file in these cases. (We don't want to generate |
|
1401 native headers for all classes that contains constants |
|
1402 but no native methods, since |
|
1403 that would slow down the compilation process needlessly.) |
|
1404 </p> |
1409 </p> |
1405 |
1410 |
1406 <p> |
1411 <p> |
1407 <b>Q:</b> |
1412 <b>Q:</b> |
1408 Is anything able to use the results of the new build's default make target? |
1413 Is anything able to use the results of the new build's default make target? |
1427 I usually set a specific environment variable when building, |
1432 I usually set a specific environment variable when building, |
1428 but I can't find the equivalent in the new build. |
1433 but I can't find the equivalent in the new build. |
1429 What should I do? |
1434 What should I do? |
1430 <br> |
1435 <br> |
1431 <b>A:</b> |
1436 <b>A:</b> |
1432 It might very well be that we have missed to add support for |
1437 It might very well be that we have neglected to add support for |
1433 an option that was actually used from outside the build system. |
1438 an option that was actually used from outside the build system. |
1434 Email us and we will |
1439 Email us and we will add support for it! |
1435 add support for it! |
|
1436 </p> |
1440 </p> |
1437 |
1441 |
1438 </blockquote> |
1442 </blockquote> |
1439 |
1443 |
1440 <h3><a name="performance">Build Performance Tips</a></h3> |
1444 <h3><a name="performance">Build Performance Tips</a></h3> |