52 <li><a href="#opensuse">OpenSUSE</a></li> |
52 <li><a href="#opensuse">OpenSUSE</a></li> |
53 <li><a href="#mandriva">Mandriva</a></li> |
53 <li><a href="#mandriva">Mandriva</a></li> |
54 <li><a href="#opensolaris">OpenSolaris</a></li> |
54 <li><a href="#opensolaris">OpenSolaris</a></li> |
55 </ul> |
55 </ul> |
56 </li> |
56 </li> |
57 <li><a href="#directories">Source Directory Structure</a> </li> |
57 <li><a href="#directories">Source Directory Structure</a> |
|
58 <ul> |
|
59 <li><a href="#drops">Managing the Source Drops</a></li> |
|
60 </ul> |
|
61 </li> |
58 <li><a href="#building">Build Information</a> |
62 <li><a href="#building">Build Information</a> |
59 <ul> |
63 <ul> |
60 <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li> |
64 <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li> |
61 <li><a href="#linux">Basic Linux System Setup</a> </li> |
65 <li><a href="#linux">Basic Linux System Setup</a> </li> |
62 <li><a href="#solaris">Basic Solaris System Setup</a> </li> |
66 <li><a href="#solaris">Basic Solaris System Setup</a> </li> |
63 <li><a href="#windows">Basic Windows System Setup</a> </li> |
67 <li><a href="#windows">Basic Windows System Setup</a> </li> |
64 <li><a href="#dependencies">Build Dependencies</a> |
68 <li><a href="#dependencies">Build Dependencies</a> |
65 <ul> |
69 <ul> |
66 <li><a href="#bootjdk">Bootstrap JDK</a> </li> |
70 <li><a href="#bootjdk">Bootstrap JDK</a> </li> |
67 <li><a href="#importjdk">Optional Import JDK</a> </li> |
71 <li><a href="#importjdk">Optional Import JDK</a> </li> |
68 <li><a href="#ant">Ant</a> </li> |
72 <li><a href="#ant">Ant 1.7.1</a> </li> |
69 <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li> |
73 <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li> |
70 <li><a href="#compilers">Compilers</a> |
74 <li><a href="#compilers">Compilers</a> |
71 <ul> |
75 <ul> |
72 <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li> |
76 <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li> |
73 <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li> |
77 <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li> |
112 <blockquote> |
116 <blockquote> |
113 The OpenJDK sources are maintained with the revision control system |
117 The OpenJDK sources are maintained with the revision control system |
114 <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>. |
118 <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>. |
115 If you are new to Mercurial, please see the |
119 If you are new to Mercurial, please see the |
116 <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a> |
120 <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a> |
117 or refer to the <a href=""http://hgbook.red-bean.com/">Mercurial Book</a>. |
121 or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>. |
118 The first few chapters of the book provide an excellent overview of |
122 The first few chapters of the book provide an excellent overview of |
119 Mercurial, what it is and how it works. |
123 Mercurial, what it is and how it works. |
120 <br> |
124 <br> |
121 For using Mercurial with the OpenJDK refer to the |
125 For using Mercurial with the OpenJDK refer to the |
122 <a href=""http://openjdk.java.net/guide/repositories.html#installConfig"> |
126 <a href="http://openjdk.java.net/guide/repositories.html#installConfig"> |
123 Developer Guide: Installing and Configuring Mercurial</a> |
127 Developer Guide: Installing and Configuring Mercurial</a> |
124 section for more information. |
128 section for more information. |
125 The Forest Extension is not part of the Mercurial install, |
129 The Forest Extension is not part of the Mercurial install, |
126 and is optional, |
130 and is optional, |
127 but can be obtained with the following commands: |
131 but can be obtained with the following commands: |
128 <blockquote> |
132 <blockquote> |
205 </thead> |
209 </thead> |
206 <tbody> |
210 <tbody> |
207 <tr> |
211 <tr> |
208 <td>Linux X86 (32-bit)</td> |
212 <td>Linux X86 (32-bit)</td> |
209 <td>Fedora 9</td> |
213 <td>Fedora 9</td> |
210 <td>gcc 4 </td> |
214 <td>gcc 4.3 </td> |
211 <td>JDK 6u14 FCS </td> |
215 <td>JDK 6u18</td> |
212 </tr> |
216 </tr> |
213 <tr> |
217 <tr> |
214 <td>Linux X64 (64-bit)</td> |
218 <td>Linux X64 (64-bit)</td> |
215 <td>Fedora 9</td> |
219 <td>Fedora 9</td> |
216 <td>gcc 4 </td> |
220 <td>gcc 4.3 </td> |
217 <td>JDK 6u14 FCS </td> |
221 <td>JDK 6u18</td> |
218 </tr> |
222 </tr> |
219 <tr> |
223 <tr> |
220 <td>Solaris SPARC (32-bit)</td> |
224 <td>Solaris SPARC (32-bit)</td> |
221 <td>Solaris 10u2 + patches |
225 <td>Solaris 10 Update 6</td> |
222 <br> |
|
223 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank"> |
|
224 SunSolve</a> for patch downloads. |
|
225 </td> |
|
226 <td>Sun Studio 12 Update 1 + patches</td> |
226 <td>Sun Studio 12 Update 1 + patches</td> |
227 <td>JDK 6u14 FCS </td> |
227 <td>JDK 6u18</td> |
228 </tr> |
228 </tr> |
229 <tr> |
229 <tr> |
230 <td>Solaris SPARCV9 (64-bit)</td> |
230 <td>Solaris SPARCV9 (64-bit)</td> |
231 <td>Solaris 10u2 + patches |
231 <td>Solaris 10 Update 6</td> |
232 <br> |
|
233 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank"> |
|
234 SunSolve</a> for patch downloads. |
|
235 </td> |
|
236 <td>Sun Studio 12 Update 1 + patches</td> |
232 <td>Sun Studio 12 Update 1 + patches</td> |
237 <td>JDK 6u14 FCS </td> |
233 <td>JDK 6u18</td> |
238 </tr> |
234 </tr> |
239 <tr> |
235 <tr> |
240 <td>Solaris X86 (32-bit)</td> |
236 <td>Solaris X86 (32-bit)</td> |
241 <td>Solaris 10u2 + patches |
237 <td>Solaris 10 Update 6</td> |
242 <br> |
|
243 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank"> |
|
244 SunSolve</a> for patch downloads. |
|
245 </td> |
|
246 <td>Sun Studio 12 Update 1 + patches</td> |
238 <td>Sun Studio 12 Update 1 + patches</td> |
247 <td>JDK 6u14 FCS </td> |
239 <td>JDK 6u18</td> |
248 </tr> |
240 </tr> |
249 <tr> |
241 <tr> |
250 <td>Solaris X64 (64-bit)</td> |
242 <td>Solaris X64 (64-bit)</td> |
251 <td>Solaris 10u2 + patches |
243 <td>Solaris 10 Update 6</td> |
252 <br> |
|
253 See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank"> |
|
254 SunSolve</a> for patch downloads. |
|
255 </td> |
|
256 <td>Sun Studio 12 Update 1 + patches</td> |
244 <td>Sun Studio 12 Update 1 + patches</td> |
257 <td>JDK 6u14 FCS </td> |
245 <td>JDK 6u18</td> |
258 </tr> |
246 </tr> |
259 <tr> |
247 <tr> |
260 <td>Windows X86 (32-bit)</td> |
248 <td>Windows X86 (32-bit)</td> |
261 <td>Windows XP</td> |
249 <td>Windows XP</td> |
262 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> |
250 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> |
263 <td>JDK 6u14 FCS </td> |
251 <td>JDK 6u18</td> |
264 </tr> |
252 </tr> |
265 <tr> |
253 <tr> |
266 <td>Windows X64 (64-bit)</td> |
254 <td>Windows X64 (64-bit)</td> |
267 <td>Windows Server 2003 - Enterprise x64 Edition</td> |
255 <td>Windows Server 2003 - Enterprise x64 Edition</td> |
268 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> |
256 <td>Microsoft Visual Studio C++ 2010 Professional Edition</td> |
269 <td>JDK 6u14 FCS </td> |
257 <td>JDK 6u18</td> |
270 </tr> |
258 </tr> |
271 </tbody> |
259 </tbody> |
272 </table> |
260 </table> |
273 <p> |
261 <p> |
274 These same sources do indeed build on many more systems than the |
262 These same sources do indeed build on many more systems than the |
550 files for building the OpenJDK JAXP files. |
538 files for building the OpenJDK JAXP files. |
551 The <tt>jdk</tt> directory contains the source code and make files for |
539 The <tt>jdk</tt> directory contains the source code and make files for |
552 building the OpenJDK runtime libraries and misc files. |
540 building the OpenJDK runtime libraries and misc files. |
553 The top level <tt>Makefile</tt> |
541 The top level <tt>Makefile</tt> |
554 is used to build the entire OpenJDK. |
542 is used to build the entire OpenJDK. |
|
543 |
|
544 <h3><a name="drops">Managing the Source Drops</a></h3> |
|
545 <blockquote> |
|
546 <p> |
|
547 The repositories <tt>jaxp</tt> and <tt>jaxws</tt> actually |
|
548 do not contain the sources for JAXP or JAX-WS. |
|
549 These products have their own open source procedures at their |
|
550 <a href="http://jaxp.java.net/">JAXP</a> and |
|
551 <a href="http://jax-ws.java.net/">JAX-WS</a> home pages. |
|
552 The OpenJDK project does need access to these sources to build |
|
553 a complete JDK image because JAXP and JAX-WS are part of the JDK. |
|
554 The current process for delivery of the JAXP and JAX-WS sources |
|
555 involves so called "source drop bundles" downloaded from a public |
|
556 website. |
|
557 There are many reasons for this current mechanism, and it is |
|
558 understood that this is not ideal for the open source community. |
|
559 It is possible this process could change in the future. |
|
560 <br> |
|
561 <b>NOTE:</b> The <a href="http://download.java.net/openjdk/jdk7/"> |
|
562 Complete OpenJDK Source Bundles</a> <u>will</u> contain the JAXP and |
|
563 JAX-WS sources. |
|
564 </p> |
|
565 |
|
566 <h4><a name="dropcreation">Creation of New Source Drop Bundles</a></h4> |
|
567 <blockquote> |
|
568 <ol> |
|
569 <li> |
|
570 The JAXP or JAX-WS team prepares a new zip bundle, |
|
571 places a copy in a public download area on java.net, |
|
572 sends us a link and a list of CRs (Change Request Numbers). |
|
573 The older download bundles should not be deleted. |
|
574 It is the responsibility of the JAXP and JAX-WS team to |
|
575 place the proper GPL legal notices on the sources |
|
576 and do any filtering or java re-packaging for the |
|
577 OpenJDK instances of these classes. |
|
578 </li> |
|
579 <li> |
|
580 The OpenJDK team copies this new bundle into shared |
|
581 area (e.g. <tt>/java/devtools/share/jdk7-drops</tt>). |
|
582 Older bundles are never deleted so we retain the history. |
|
583 </li> |
|
584 <li> |
|
585 The OpenJDK team edits the ant property file |
|
586 <tt>jaxp/jaxp.properties</tt> or |
|
587 <tt>jaxws/jaxws.properties</tt> to update the |
|
588 base URL, the zip bundle name, and the MD5 checksum |
|
589 of the zip bundle |
|
590 (on Solaris: <tt>sum -c md5 <i>bundlename</i></tt>) |
|
591 </li> |
|
592 <li> |
|
593 OpenJDK team reviews and commits those changes with the |
|
594 given CRs. |
|
595 </li> |
|
596 </ol> |
|
597 </blockquote> |
|
598 |
|
599 <h4><a name="dropusage">Using Source Drop Bundles</a></h4> |
|
600 <blockquote> |
|
601 <p> |
|
602 The ant scripts that build <tt>jaxp</tt> and <tt>jaxws</tt> |
|
603 will attempt to locate these zip bundles from the directory |
|
604 in the environment variable |
|
605 <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt>. |
|
606 The checksums protect from getting the wrong, corrupted, or |
|
607 improperly modified sources. |
|
608 Once the sources are made available, the population will not |
|
609 happen again unless a <tt>make clobber</tt> is requested |
|
610 or the <tt>jaxp/drop/</tt> or <tt>jaxws/drop/</tt> |
|
611 directory is explicitly deleted. |
|
612 <br> |
|
613 <b>NOTE:</b> The default Makefile and ant script behavior |
|
614 is to NOT download these bundles from the public http site. |
|
615 In general, doing downloads |
|
616 during the build process is not advised, it creates too much |
|
617 unpredictability in the build process. |
|
618 However, you can use <tt>make ALLOW_DOWNLOADS=true</tt> to |
|
619 tell the ant script that the download of the zip bundle is |
|
620 acceptable. |
|
621 </p> |
|
622 <p> |
|
623 The recommended procedure for keeping a cache of these |
|
624 source bundles would be to download them once, place them |
|
625 in a directory outside the repositories, and then set |
|
626 <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> to refer |
|
627 to that directory. |
|
628 These drop bundles do change occasionally, so the newer |
|
629 bundles may need to be added to this area from time to time. |
|
630 </p> |
|
631 </blockquote> |
|
632 </blockquote> |
555 </blockquote> |
633 </blockquote> |
556 <!-- ------------------------------------------------------ --> |
634 <!-- ------------------------------------------------------ --> |
557 <hr> |
635 <hr> |
558 <h2><a name="building">Build Information</a></h2> |
636 <h2><a name="building">Build Information</a></h2> |
559 <blockquote> |
637 <blockquote> |
560 Building the OpenJDK |
638 Building the OpenJDK |
561 is done with a <tt><i>gmake</i></tt> |
639 is done with a <a href="#gmake">GNU <tt>make</tt></a> command line |
562 command line and various |
640 and various |
563 environment or make variable settings that direct the make rules |
641 environment or make variable settings that direct the makefile rules |
564 to where various components have been installed. |
642 to where various components have been installed. |
565 Where possible the makefiles will attempt to located the various |
643 Where possible the makefiles will attempt to located the various |
566 components in the default locations or any component specific |
644 components in the default locations or any component specific |
567 variable settings. |
645 variable settings. |
568 When the normal defaults fail or components cannot be found, |
646 When the normal defaults fail or components cannot be found, |
597 GNU version of the utility command <tt>make</tt> |
675 GNU version of the utility command <tt>make</tt> |
598 (<tt><i>gmake</i></tt>). |
676 (<tt><i>gmake</i></tt>). |
599 A few notes about using GNU make: |
677 A few notes about using GNU make: |
600 <ul> |
678 <ul> |
601 <li> |
679 <li> |
602 In general, you need GNU make version 3.81 or newer. |
680 You need GNU make version 3.81 or newer. |
603 </li> |
681 </li> |
604 <li> |
682 <li> |
605 Place the location of the GNU make binary in the <tt>PATH</tt>. |
683 Place the location of the GNU make binary in the <tt>PATH</tt>. |
606 </li> |
684 </li> |
607 <li> |
685 <li> |
608 <strong>Linux:</strong> |
686 <strong>Linux:</strong> |
609 The <tt>/usr/bin/make</tt> command should work fine for you. |
687 The <tt>/usr/bin/make</tt> should be 3.81 or newer |
|
688 and should work fine for you. |
|
689 If this version is not 3.81 or newer, |
|
690 see the <a href="#buildgmake">"Building GNU make"</a> section. |
610 </li> |
691 </li> |
611 <li> |
692 <li> |
612 <strong>Solaris:</strong> |
693 <strong>Solaris:</strong> |
613 Do NOT use <tt>/usr/bin/make</tt> on Solaris. |
694 Do NOT use <tt>/usr/bin/make</tt> on Solaris. |
614 If your Solaris system has the software |
695 If your Solaris system has the software |
615 from the Solaris Companion CD installed, |
696 from the Solaris Companion CD installed, |
616 you should use <tt>gmake</tt> |
697 you should try and use <tt>gmake</tt> |
617 which will be located in either the <tt>/opt/sfw/bin</tt> or |
698 which will be located in either the <tt>/opt/sfw/bin</tt> or |
618 <tt>/usr/sfw/bin</tt> directory. |
699 <tt>/usr/sfw/bin</tt> directory. |
619 In more recent versions of Solaris GNU make can be found |
700 In more recent versions of Solaris GNU make might be found |
620 at <tt>/usr/bin/gmake</tt>. |
701 at <tt>/usr/bin/gmake</tt>.<br> |
|
702 <b>NOTE:</b> It is very likely that this <tt>gmake</tt> |
|
703 could be 3.80, you need 3.81, in which case, |
|
704 see the <a href="#buildgmake">"Building GNU make"</a> section. |
621 </li> |
705 </li> |
622 <li> |
706 <li> |
623 <strong>Windows:</strong> |
707 <strong>Windows:</strong> |
624 Make sure you start your build inside a bash/sh/ksh shell |
708 Make sure you start your build inside a bash/sh/ksh shell |
625 and are using a <tt>make.exe</tt> utility built for that |
709 and are using a <tt>make.exe</tt> utility built for that |
626 environment (a cygwin <tt>make.exe</tt> is not the same |
710 environment (a cygwin <tt>make.exe</tt> is not the same |
627 as a <tt>make.exe</tt> built for something like |
711 as a <tt>make.exe</tt> built for something like |
628 <a href="http://www.mkssoftware.com/">MKS</a>). |
712 <a href="http://www.mkssoftware.com/">MKS</a>). |
629 <br> |
713 <br> |
630 <b>WARNING:</b> Watch out for make version 3.81, it may |
714 <b>WARNING:</b> Watch out on some make 3.81 versions, it may |
631 not work due to a lack of support for MS-DOS drive letter paths |
715 not work due to a lack of support for MS-DOS drive letter paths |
632 like <tt>C:/</tt> or <tt>C:\</tt>. |
716 like <tt>C:/</tt> or <tt>C:\</tt>. |
633 Use a 3.80 version, or find a newer |
|
634 version that has this problem fixed. |
|
635 The older 3.80 version of make.exe can be downloaded with this |
|
636 <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank"> |
|
637 link</a>. |
|
638 Use of this older 3.80 make.exe may require that you install the |
|
639 libintl2.dll library or libintl2 cygwin package which is |
|
640 no longer installed by default by the cygwin installer. |
|
641 <br> |
717 <br> |
642 Also see the |
718 You may be able to use the information at the |
643 <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank"> |
719 <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank"> |
644 mozilla developer center</a> |
720 mozilla developer center</a> |
645 on this topic. |
721 on this topic. |
646 <br> |
722 <br> |
647 It's hoped that when make 3.82 starts shipping in a future cygwin |
723 It's hoped that when make 3.82 starts shipping in a future cygwin |
648 release that this MS-DOS path issue will be fixed. |
724 release that this MS-DOS path issue will be fixed. |
649 In addition to the above 3.80 make.exe you can download |
725 <br> |
650 this |
726 It may be possible to download the version at |
651 <a href="http://www.cmake.org/files/cygwin/make.exe"> |
727 <a href="http://www.cmake.org/files/cygwin/make.exe"> |
652 www.cmake.org make.exe</a> which will not have a libintl2.dll |
728 www.cmake.org make.exe</a>. |
653 dependency. |
729 <br> |
|
730 It might be necessary for you to build your own GNU make 3.81, |
|
731 see the <a href="#buildgmake">"Building GNU make"</a> section |
|
732 in that case. |
654 </li> |
733 </li> |
655 </ul> |
734 </ul> |
656 <p> |
735 <p> |
657 Information on GNU make, and access to ftp download sites, are |
736 Information on GNU make, and access to ftp download sites, are |
658 available on the |
737 available on the |
660 GNU make web site |
739 GNU make web site |
661 </a>. |
740 </a>. |
662 The latest source to GNU make is available at |
741 The latest source to GNU make is available at |
663 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank"> |
742 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank"> |
664 ftp.gnu.org/pub/gnu/make/</a>. |
743 ftp.gnu.org/pub/gnu/make/</a>. |
|
744 </p> |
|
745 <!-- ------------------------------------------------------ --> |
|
746 <h4><a name="buildgmake">Building GNU make</a></h4> |
|
747 <blockquote> |
|
748 First step is to get the GNU make 3.81 source from |
|
749 <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank"> |
|
750 ftp.gnu.org/pub/gnu/make/</a>. |
|
751 Building is a little different depending on the OS and unix toolset |
|
752 on Windows: |
|
753 <ul> |
|
754 <li> |
|
755 <strong>Linux:</strong> |
|
756 <tt>./configure && make</tt> |
|
757 </li> |
|
758 <li> |
|
759 <strong>Solaris:</strong> |
|
760 <tt>./configure && gmake CC=gcc</tt> |
|
761 </li> |
|
762 <li> |
|
763 <strong>Windows for CYGWIN:</strong> |
|
764 <tt>./configure && make</tt> |
|
765 </li> |
|
766 <li> |
|
767 <strong>Windows for MKS: (CYGWIN is recommended)</strong> |
|
768 <tt>./configure && make -f Makefile.win32</tt> |
|
769 </li> |
|
770 </ul> |
|
771 </blockquote> |
665 </blockquote> |
772 </blockquote> |
666 <!-- ------------------------------------------------------ --> |
773 <!-- ------------------------------------------------------ --> |
667 <hr> |
774 <hr> |
668 <h3><a name="linux">Basic Linux System Setup</a></h3> |
775 <h3><a name="linux">Basic Linux System Setup</a></h3> |
669 <blockquote> |
776 <blockquote> |
921 <!-- ------------------------------------------------------ --> |
1028 <!-- ------------------------------------------------------ --> |
922 <h4><a name="ant">Ant</a></h4> |
1029 <h4><a name="ant">Ant</a></h4> |
923 <blockquote> |
1030 <blockquote> |
924 All OpenJDK builds require access to least Ant 1.7.1. |
1031 All OpenJDK builds require access to least Ant 1.7.1. |
925 The Ant tool is available from the |
1032 The Ant tool is available from the |
926 <a href="http://ant.apache.org" target="_blank"> |
1033 <a href="http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip" target="_blank"> |
927 Ant download site</a>. |
1034 Ant 1.7.1 archive download site</a>. |
928 You should always make sure <tt>ant</tt> is in your PATH, and |
1035 You should always make sure <tt>ant</tt> is in your PATH, and |
929 on Windows you may also need to set |
1036 on Windows you may also need to set |
930 <tt><a href="#ANT_HOME">ANT_HOME</a></tt> |
1037 <tt><a href="#ANT_HOME">ANT_HOME</a></tt> |
931 to point to the location of |
1038 to point to the location of |
932 the Ant installation, this is the directory pathname |
1039 the Ant installation, this is the directory pathname |
933 that contains a <tt>bin and lib</tt>. |
1040 that contains a <tt>bin and lib</tt>. |
|
1041 <br> |
|
1042 <b>WARNING:</b> Ant versions used from IDE tools like NetBeans |
|
1043 or installed via system packages may not operate the same |
|
1044 as the one obtained from the Ant download bundles. |
|
1045 These system and IDE installers sometimes choose to change |
|
1046 the ant installation enough to cause differences. |
934 </blockquote> |
1047 </blockquote> |
935 <!-- ------------------------------------------------------ --> |
1048 <!-- ------------------------------------------------------ --> |
936 <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4> |
1049 <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4> |
937 <blockquote> |
1050 <blockquote> |
938 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank"> |
1051 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank"> |
1045 been extensively used yet. |
1158 been extensively used yet. |
1046 </blockquote> |
1159 </blockquote> |
1047 <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong> |
1160 <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong> |
1048 <blockquote> |
1161 <blockquote> |
1049 <p> |
1162 <p> |
1050 <b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to |
1163 <b>BEGIN WARNING</b>: JDK 7 has transitioned to |
1051 use the newest VS2010 Microsoft compilers. These build instructions are updated |
1164 use the newest VS2010 Microsoft compilers. |
1052 to show where we are going. We have a QA process to go through before |
1165 No other compilers are known to build the entire JDK, |
1053 official builds actually use VS2010. So for now, official builds are |
|
1054 still using VS2003. No other compilers are known to build the entire JDK, |
|
1055 including non-open portions. |
1166 including non-open portions. |
1056 So for now you should be able to build with either VS2003 or VS2010. |
|
1057 We do not guarantee that VS2008 will work, although there is sufficient |
|
1058 makefile support to make at least basic JDK builds plausible. |
|
1059 Visual Studio 2010 Express compilers are now able to build all the |
1167 Visual Studio 2010 Express compilers are now able to build all the |
1060 open source repositories, but this is 32 bit only. To build 64 bit |
1168 open source repositories, but this is 32 bit only. To build 64 bit |
1061 Windows binaries use the the 7.1 Windows SDK.<b>END WARNING.</b> |
1169 Windows binaries use the the 7.1 Windows SDK. |
|
1170 <b>END WARNING.</b> |
1062 <p> |
1171 <p> |
1063 The 32-bit OpenJDK Windows build |
1172 The 32-bit OpenJDK Windows build requires |
1064 requires |
|
1065 Microsoft Visual Studio C++ 2010 (VS2010) Professional |
1173 Microsoft Visual Studio C++ 2010 (VS2010) Professional |
1066 Edition or Express compiler. |
1174 Edition or Express compiler. |
1067 The compiler and other tools are expected to reside |
1175 The compiler and other tools are expected to reside |
1068 in the location defined by the variable |
1176 in the location defined by the variable |
1069 <tt>VS100COMNTOOLS</tt> which |
1177 <tt>VS100COMNTOOLS</tt> which |
1086 The path <tt>/usr/bin</tt> must be after the path to the |
1194 The path <tt>/usr/bin</tt> must be after the path to the |
1087 Visual Studio product. |
1195 Visual Studio product. |
1088 </blockquote> |
1196 </blockquote> |
1089 <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong> |
1197 <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong> |
1090 <blockquote> |
1198 <blockquote> |
1091 For <b>X64</b>, builds, when using the VS2010 Professional |
1199 For <b>X64</b>, the set up is much the same as 32 bit |
1092 compiler, the 64 bit build set up is much the same as 32 bit |
|
1093 except that you run <tt>amd64\VCVARS64.BAT</tt> |
1200 except that you run <tt>amd64\VCVARS64.BAT</tt> |
1094 to set the compiler environment variables. |
1201 to set the compiler environment variables. |
1095 Previously 64 bit builds had used the 64 bit compiler in |
1202 Previously 64 bit builds had to use the 64 bit compiler in |
1096 an unbundled Windows SDK but this is no longer necessary if |
1203 an unbundled Windows SDK but this is no longer necessary if |
1097 you have VS2010 Professional. |
1204 you have VS2010 Professional. |
1098 </blockquote> |
1205 </blockquote> |
1099 <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong> |
1206 <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong> |
1100 For a free alternative for 64 bit builds, use the 7.1 SDK. |
1207 For a free alternative for 64 bit builds, use the 7.1 SDK. |
1647 and |
1761 and |
1648 <tt>windows-amd64</tt>. |
1762 <tt>windows-amd64</tt>. |
1649 Where each of these directories contain the import JDK image |
1763 Where each of these directories contain the import JDK image |
1650 for that platform. |
1764 for that platform. |
1651 </dd> |
1765 </dd> |
|
1766 <dt><a name="ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a></dt> |
|
1767 <dd> |
|
1768 The top-level directory of the libraries and include files for the platform's |
|
1769 graphical programming environment. The default location is platform specific. |
|
1770 For example, on Linux it defaults to <tt>/usr/X11R6/</tt>. |
|
1771 </dd> |
1652 <dt><strong>Windows specific:</strong></dt> |
1772 <dt><strong>Windows specific:</strong></dt> |
1653 <dd> |
1773 <dd> |
1654 <dl> |
1774 <dl> |
1655 <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt> |
1775 <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt> |
1656 <dd> |
1776 <dd> |
1657 The location of the |
1777 The location of the |
1658 Microsoft Windows SDK where some tools will be |
1778 Microsoft Windows SDK where some tools will be |
1659 located. |
1779 located. |
1660 The default is whatever WINDOWSSDKDIR is set to |
1780 The default is whatever WINDOWSSDKDIR is set to |
1661 (or WindowsSdkDir) or the path |
1781 (or WindowsSdkDir) or the path |
1662 <pre> |
1782 <br> |
1663 c:\Program Files\Microsoft SDKs\Windows\v6.1a |
1783 <tt>c:\Program Files\Microsoft SDKs\Windows\v7.0a</tt> |
1664 </pre> |
|
1665 </dd> |
1784 </dd> |
1666 <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt> |
1785 <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt> |
1667 <dd> |
1786 <dd> |
1668 The location of the |
1787 The location of the |
1669 <a href="#dxsdk">Microsoft DirectX 9 SDK</a>. |
1788 <a href="#dxsdk">Microsoft DirectX 9 SDK</a>. |
1676 The location of the |
1795 The location of the |
1677 <a href="#msvcrNN"><tt>MSVCR100.DLL</tt></a>. |
1796 <a href="#msvcrNN"><tt>MSVCR100.DLL</tt></a>. |
1678 </dd> |
1797 </dd> |
1679 </dl> |
1798 </dl> |
1680 </dd> |
1799 </dd> |
|
1800 <dt><strong>Cross-Compilation Support:</strong></dt> |
|
1801 <dd> |
|
1802 <dl> |
|
1803 <dt><a name="CROSS_COMPILE_ARCH"><tt>CROSS_COMPILE_ARCH</tt></a> </dt> |
|
1804 <dd> |
|
1805 Set to the target architecture of a cross-compilation build. If set, this |
|
1806 variable is used to signify that we are cross-compiling. The expectation |
|
1807 is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set |
|
1808 to point to the cross-compiler and that any cross-compilation specific flags |
|
1809 are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>. |
|
1810 The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should |
|
1811 also be set to point to the graphical header files (e.g. X11) provided with |
|
1812 the cross-compiler. |
|
1813 When cross-compiling we skip execution of any demos etc that may be built, and |
|
1814 also skip binary-file verification. |
|
1815 </dd> |
|
1816 <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt> |
|
1817 <dd> |
|
1818 Used to pass cross-compilation options to the cross-compiler. |
|
1819 These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables. |
|
1820 </dd> |
|
1821 <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt> |
|
1822 <dd> |
|
1823 Used primarily for cross-compilation builds (and always set in that case) |
|
1824 this variable indicates that tools from the boot JDK should be used during |
|
1825 the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>) |
|
1826 just built (which can't execute on the build host). |
|
1827 </dd> |
|
1828 <dt><tt><a name="HOST_CC">HOST_CC</a></tt> </dt> |
|
1829 <dd> |
|
1830 The location of the C compiler to generate programs to run on the build host. |
|
1831 Some parts of the build generate programs that are then compiled and executed |
|
1832 to produce other parts of the build. Normally the primary C compiler is used |
|
1833 to do this, but when cross-compiling that would be the cross-compiler and the |
|
1834 resulting program could not be executed. |
|
1835 On Linux this defaults to <tt>/usr/bin/gcc</tt>; on other platforms it must be |
|
1836 set explicitly. |
|
1837 </dd> |
|
1838 </dl> |
|
1839 <dt><strong>Specialized Build Options:</strong></dt> |
|
1840 <dd> |
|
1841 Some build variables exist to support specialized build environments and/or specialized |
|
1842 build products. Their use is only supported in those contexts: |
|
1843 <dl> |
|
1844 <dt><tt><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></tt> </dt> |
|
1845 <dd> |
|
1846 Indicates this build will only contain the Hotspot client VM. In addition to |
|
1847 controlling the Hotspot build target, it ensures that we don't try to copy |
|
1848 any server VM files/directories, and defines a default <tt>jvm.cfg</tt> file |
|
1849 suitable for a client-only environment. Using this in a 64-bit build will |
|
1850 generate a sanity warning as 64-bit client builds are not directly supported. |
|
1851 </dd> |
|
1852 <dt><tt><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</tt> </dt> |
|
1853 <dd> |
|
1854 Used when the build environment has no graphical capabilities at all. This |
|
1855 excludes building anything that requires graphical libraries to be available. |
|
1856 </dd> |
|
1857 <dt><tt><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</tt> </dt> |
|
1858 <dd> |
|
1859 Used to indicate this is a build of the Oracle Java SE Embedded product. |
|
1860 This will enable the directives included in the SE-Embedded specific build |
|
1861 files. |
|
1862 </dd> |
|
1863 <dt><tt><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></tt> </dt> |
|
1864 <dd> |
|
1865 If set to false, disables the use of mmap by the zip utility. Otherwise, |
|
1866 mmap will be used. |
|
1867 </dd> |
|
1868 <dt><tt><a name="COMPRESS_JARS"></a>COMPRESS_JARS</tt> </dt> |
|
1869 <dd> |
|
1870 If set to true, causes certain jar files that would otherwise be built without |
|
1871 compression, to use compression. |
|
1872 </dd> |
|
1873 </dl> |
|
1874 </dd> |
1681 </dl> |
1875 </dl> |
|
1876 </blockquote> |
|
1877 <!-- ------------------------------------------------------ --> |
|
1878 <hr> |
|
1879 <h2><a name="hints">Hints and Tips</a></h2> |
|
1880 <blockquote> |
|
1881 You don't have to use all these hints and tips, and in fact people do actually |
|
1882 build with systems that contradict these, but they might prove to be |
|
1883 helpful to some. |
|
1884 <ul> |
|
1885 <li> |
|
1886 If <tt>make sanity</tt> does not work, find out why, fix that |
|
1887 before going any further. Or at least understand what the |
|
1888 complaints are from it. |
|
1889 </li> |
|
1890 <li> |
|
1891 JDK: Keep in mind that you are building a JDK, but you need |
|
1892 a JDK (BOOTDIR JDK) to build this JDK. |
|
1893 </li> |
|
1894 <li> |
|
1895 Ant: The ant utility is a java application and besides having |
|
1896 ant available to you, it's important that ant finds the right |
|
1897 java to run with. Make sure you can type <tt>ant -version</tt> |
|
1898 and get clean results with no error messages. |
|
1899 </li> |
|
1900 <li> |
|
1901 Linux: Try and favor the system packages over building your own |
|
1902 or getting packages from other areas. |
|
1903 Most Linux builds should be possible with the system's |
|
1904 available packages. |
|
1905 </li> |
|
1906 <li> |
|
1907 Solaris: Typically you will need to get compilers on your systems |
|
1908 and occasionally GNU make 3.81 if a gmake binary is not available. |
|
1909 The gmake binary might not be 3.81, be careful. |
|
1910 </li> |
|
1911 <li> |
|
1912 Windows VS2010: |
|
1913 <ul> |
|
1914 <li> |
|
1915 Only the C++ part of VS2010 is needed. |
|
1916 Try to let the installation go to the default install directory. |
|
1917 Always reboot your system after installing VS2010. |
|
1918 The system environment variable VS100COMNTOOLS should be |
|
1919 set in your environment. |
|
1920 </li> |
|
1921 <li> |
|
1922 Make sure that TMP and TEMP are also set in the environment |
|
1923 and refer to Windows paths that exist, like <tt>C:\temp</tt>, |
|
1924 not <tt>/tmp</tt>, not <tt>/cygdrive/c/temp</tt>, and not <tt>C:/temp</tt>. |
|
1925 <tt>C:\temp</tt> is just an example, it is assumed that this area is |
|
1926 private to the user, so by default after installs you should |
|
1927 see a unique user path in these variables. |
|
1928 </li> |
|
1929 <li> |
|
1930 You need to use vsvars32.bat or vsvars64.bat to get the |
|
1931 PATH, INCLUDE, LIB, LIBPATH, and WINDOWSSDKDIR |
|
1932 variables set in your shell environment. |
|
1933 These bat files are not easy to use from a shell environment. |
|
1934 However, there is a script placed in the root jdk7 repository called |
|
1935 vsvars.sh that can help, it should only be done once in a shell |
|
1936 that will be doing the build, e.g.<br> |
|
1937 <tt>sh ./make/scripts/vsvars.sh -v10 > settings<br> |
|
1938 eval `cat settings`</tt><br> |
|
1939 Or just <tt>eval `sh ./make/scripts/vsvars.sh -v10`</tt>. |
|
1940 </li> |
|
1941 </ul> |
|
1942 </li> |
|
1943 <li> |
|
1944 Windows: PATH order is critical, see the |
|
1945 <a href="#paths">paths</a> section for more information. |
|
1946 </li> |
|
1947 <li> |
|
1948 Windows 64bit builds: Use ARCH_DATA_MODEL=64. |
|
1949 </li> |
|
1950 </ul> |
1682 </blockquote> |
1951 </blockquote> |
1683 <!-- ------------------------------------------------------ --> |
1952 <!-- ------------------------------------------------------ --> |
1684 <hr> |
1953 <hr> |
1685 <h2><a name="troubleshooting">Troubleshooting</a></h2> |
1954 <h2><a name="troubleshooting">Troubleshooting</a></h2> |
1686 <blockquote> |
1955 <blockquote> |
1799 "Allow all unconfined executables to use libraries requiring text relocation ..."</li> |
2081 "Allow all unconfined executables to use libraries requiring text relocation ..."</li> |
1800 </ol> |
2082 </ol> |
1801 </blockquote> |
2083 </blockquote> |
1802 </li> |
2084 </li> |
1803 <li> |
2085 <li> |
1804 <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b> |
2086 <b>Windows Error Messages:</b><br> |
|
2087 <tt>*** fatal error - couldn't allocate heap, ... </tt><br> |
|
2088 <tt>rm fails with "Directory not empty"</tt><br> |
|
2089 <tt>unzip fails with "cannot create ... Permission denied"</tt><br> |
|
2090 <tt>unzip fails with "cannot create ... Error 50"</tt><br> |
1805 <blockquote> |
2091 <blockquote> |
1806 The CYGWIN software can conflict with other non-CYGWIN |
2092 The CYGWIN software can conflict with other non-CYGWIN |
1807 software. See the CYGWIN FAQ section on |
2093 software. See the CYGWIN FAQ section on |
1808 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> |
2094 <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank"> |
1809 BLODA (applications that interfere with CYGWIN)</a>. |
2095 BLODA (applications that interfere with CYGWIN)</a>. |
1810 </blockquote> |
2096 </blockquote> |
1811 </li> |
2097 </li> |
1812 <li> |
2098 <li> |
1813 <b>Windows Error Message: <tt>*** multiple target patterns. Stop.</tt></b> |
2099 <b>Windows Error Message: <tt>spawn failed</tt></b> |
1814 <blockquote> |
2100 <blockquote> |
1815 The CYGWIN make version 3.81 may not like the Windows <tt>C:/</tt> |
2101 Try rebooting the system, or there could be some kind of |
1816 style paths, it may not like the ':' character in the path |
2102 issue with the disk or disk partition being used. |
1817 when used in a makefile target definition. |
2103 Sometimes it comes with a "Permission Denied" message. |
1818 See the <a href="#gmake"><tt><i>gmake</i></tt></a> section. |
|
1819 </blockquote> |
2104 </blockquote> |
1820 </li> |
2105 </li> |
1821 </ul> |
2106 </ul> |
1822 </blockquote> |
2107 </blockquote> |
1823 <hr> |
2108 <hr> |