README-builds.html
author lana
Thu, 09 Feb 2017 18:10:19 +0000 (2017-02-09)
changeset 43707 792fd4b0a40d
parent 41040 7b919a4497ff
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
     1
<html>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     2
  <head>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     3
    <title>OpenJDK Build README</title>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     4
  </head>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     5
  <body>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     6
<p><img src="http://openjdk.java.net/images/openjdk.png" alt="OpenJDK" title="" /></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     7
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     8
<h1>OpenJDK Build README</h1>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
     9
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    10
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    11
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    12
<p><a name="introduction"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    13
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    14
<h2>Introduction</h2>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    15
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    16
<p>This README file contains build instructions for the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    17
<a href="http://openjdk.java.net">OpenJDK</a>. Building the source code for the OpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    18
requires a certain degree of technical expertise.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    19
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    20
<h3>!!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    21
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    22
<p>Some Headlines:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    23
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    24
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    25
<li>The build is now a "<code>configure &amp;&amp; make</code>" style build</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    26
<li>Any GNU make 3.81 or newer should work, except on Windows where 4.0 or newer
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    27
is recommended.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    28
<li>The build should scale, i.e. more processors should cause the build to be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    29
done in less wall-clock time</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    30
<li>Nested or recursive make invocations have been significantly reduced,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    31
as has the total fork/exec or spawning of sub processes during the build</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    32
<li>Windows MKS usage is no longer supported</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    33
<li>Windows Visual Studio <code>vsvars*.bat</code> and <code>vcvars*.bat</code> files are run
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    34
automatically</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    35
<li>Ant is no longer used when building the OpenJDK</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    36
<li>Use of ALT_* environment variables for configuring the build is no longer
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    37
supported</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    38
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    39
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    40
<hr />
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    41
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    42
<h2>Contents</h2>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    43
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    44
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    45
<li><a href="#introduction">Introduction</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    46
<li><a href="#hg">Use of Mercurial</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    47
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    48
<li><a href="#get_source">Getting the Source</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    49
<li><a href="#repositories">Repositories</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    50
</ul></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    51
<li><a href="#building">Building</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    52
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    53
<li><a href="#setup">System Setup</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    54
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    55
<li><a href="#linux">Linux</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    56
<li><a href="#solaris">Solaris</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    57
<li><a href="#macosx">Mac OS X</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    58
<li><a href="#windows">Windows</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    59
</ul></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    60
<li><a href="#configure">Configure</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    61
<li><a href="#make">Make</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    62
</ul></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    63
<li><a href="#testing">Testing</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    64
</ul>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    65
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    66
<hr />
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    67
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    68
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    69
<li><a href="#hints">Appendix A: Hints and Tips</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    70
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    71
<li><a href="#faq">FAQ</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    72
<li><a href="#performance">Build Performance Tips</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    73
<li><a href="#troubleshooting">Troubleshooting</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    74
</ul></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    75
<li><a href="#gmake">Appendix B: GNU Make Information</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    76
<li><a href="#buildenvironments">Appendix C: Build Environments</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    77
</ul>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
    78
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    79
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    80
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    81
<p><a name="hg"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    82
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    83
<h2>Use of Mercurial</h2>
7650
6a3a53d8eacc 7003845: README-builds document proper location of forest extension, provide alternatives
ohair
parents: 7360
diff changeset
    84
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    85
<p>The OpenJDK sources are maintained with the revision control system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    86
<a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>. If you are new to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    87
Mercurial, please see the <a href="http://mercurial.selenic.com/wiki/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    88
BeginnersGuides">Beginner Guides</a> or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    89
The first few chapters of the book provide an excellent overview of Mercurial,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    90
what it is and how it works.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    91
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    92
<p>For using Mercurial with the OpenJDK refer to the <a href="http://openjdk.java.net/guide/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    93
repositories.html#installConfig">Developer Guide: Installing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    94
and Configuring Mercurial</a> section for more information.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    95
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    96
<p><a name="get_source"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    97
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    98
<h3>Getting the Source</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
    99
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   100
<p>To get the entire set of OpenJDK Mercurial repositories use the script
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   101
<code>get_source.sh</code> located in the root repository:</p>
7650
6a3a53d8eacc 7003845: README-builds document proper location of forest extension, provide alternatives
ohair
parents: 7360
diff changeset
   102
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   103
<pre><code>  hg clone http://hg.openjdk.java.net/jdk9/jdk9 YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   104
  cd YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   105
  bash ./get_source.sh
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   106
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   107
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   108
<p>Once you have all the repositories, keep in mind that each repository is its
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   109
own independent repository. You can also re-run <code>./get_source.sh</code> anytime to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   110
pull over all the latest changesets in all the repositories. This set of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   111
nested repositories has been given the term "forest" and there are various
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   112
ways to apply the same <code>hg</code> command to each of the repositories. For
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   113
example, the script <code>make/scripts/hgforest.sh</code> can be used to repeat the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   114
same <code>hg</code> command on every repository, e.g.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   115
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   116
<pre><code>  cd YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   117
  bash ./make/scripts/hgforest.sh status
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   118
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   119
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   120
<p><a name="repositories"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   121
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   122
<h3>Repositories</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   123
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   124
<p>The set of repositories and what they contain:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   125
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   126
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   127
<li><strong>. (root)</strong> contains common configure and makefile logic</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   128
<li><strong>hotspot</strong> contains source code and make files for building the OpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   129
Hotspot Virtual Machine</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   130
<li><strong>langtools</strong> contains source code for the OpenJDK javac and language tools</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   131
<li><strong>jdk</strong> contains source code and make files for building the OpenJDK runtime
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   132
libraries and misc files</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   133
<li><strong>jaxp</strong> contains source code for the OpenJDK JAXP functionality</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   134
<li><strong>jaxws</strong> contains source code for the OpenJDK JAX-WS functionality</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   135
<li><strong>corba</strong> contains source code for the OpenJDK Corba functionality</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   136
<li><strong>nashorn</strong> contains source code for the OpenJDK JavaScript implementation</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   137
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   138
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   139
<h3>Repository Source Guidelines</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   140
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   141
<p>There are some very basic guidelines:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   142
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   143
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   144
<li>Use of whitespace in source files (.java, .c, .h, .cpp, and .hpp files) is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   145
restricted. No TABs, no trailing whitespace on lines, and files should not
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   146
terminate in more than one blank line.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   147
<li>Files with execute permissions should not be added to the source
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   148
repositories.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   149
<li>All generated files need to be kept isolated from the files maintained or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   150
managed by the source control system. The standard area for generated files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   151
is the top level <code>build/</code> directory.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   152
<li>The default build process should be to build the product and nothing else,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   153
in one form, e.g. a product (optimized), debug (non-optimized, -g plus
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   154
assert logic), or fastdebug (optimized, -g plus assert logic).</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   155
<li>The <code>.hgignore</code> file in each repository must exist and should include
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   156
<code>^build/</code>, <code>^dist/</code> and optionally any <code>nbproject/private</code> directories. <strong>It
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   157
should NEVER</strong> include anything in the <code>src/</code> or <code>test/</code> or any managed
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   158
directory area of a repository.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   159
<li>Directory names and file names should never contain blanks or non-printing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   160
characters.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   161
<li>Generated source or binary files should NEVER be added to the repository
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   162
(that includes <code>javah</code> output). There are some exceptions to this rule, in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   163
particular with some of the generated configure scripts.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   164
<li>Files not needed for typical building or testing of the repository should
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   165
not be added to the repository.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   166
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   167
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   168
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   169
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   170
<p><a name="building"></a></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   171
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   172
<h2>Building</h2>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   173
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   174
<p>The very first step in building the OpenJDK is making sure the system itself
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   175
has everything it needs to do OpenJDK builds. Once a system is setup, it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   176
generally doesn't need to be done again.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   177
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   178
<p>Building the OpenJDK is now done with running a <code>configure</code> script which will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   179
try and find and verify you have everything you need, followed by running
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   180
<code>make</code>, e.g.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   181
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   182
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   183
  <p><strong><code>bash ./configure</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   184
 <strong><code>make all</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   185
</blockquote>
7650
6a3a53d8eacc 7003845: README-builds document proper location of forest extension, provide alternatives
ohair
parents: 7360
diff changeset
   186
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   187
<p>Where possible the <code>configure</code> script will attempt to located the various
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   188
components in the default locations or via component specific variable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   189
settings. When the normal defaults fail or components cannot be found,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   190
additional <code>configure</code> options may be necessary to help <code>configure</code> find the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   191
necessary tools for the build, or you may need to re-visit the setup of your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   192
system due to missing software packages.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   193
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   194
<p><strong>NOTE:</strong> The <code>configure</code> script file does not have execute permissions and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   195
will need to be explicitly run with <code>bash</code>, see the source guidelines.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   196
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   197
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   198
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   199
<p><a name="setup"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   200
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   201
<h3>System Setup</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   202
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   203
<p>Before even attempting to use a system to build the OpenJDK there are some very
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   204
basic system setups needed. For all systems:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   205
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   206
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   207
<li><p>Be sure the GNU make utility is version 3.81 (4.0 on windows) or newer, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   208
run "<code>make -version</code>"</p>
7650
6a3a53d8eacc 7003845: README-builds document proper location of forest extension, provide alternatives
ohair
parents: 7360
diff changeset
   209
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   210
<p><a name="bootjdk"></a></p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   211
<li><p>Install a Bootstrap JDK. All OpenJDK builds require access to a previously
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   212
released JDK called the <em>bootstrap JDK</em> or <em>boot JDK.</em> The general rule is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   213
that the bootstrap JDK must be an instance of the previous major release of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   214
the JDK. In addition, there may be a requirement to use a release at or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   215
beyond a particular update level.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   216
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   217
<p><strong><em>Building JDK 9 requires JDK 8. JDK 9 developers should not use JDK 9 as
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   218
the boot JDK, to ensure that JDK 9 dependencies are not introduced into the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   219
parts of the system that are built with JDK 8.</em></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   220
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   221
<p>The JDK 8 binaries can be downloaded from Oracle's <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 8 download
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   222
site</a>.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   223
For build performance reasons it is very important that this bootstrap JDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   224
be made available on the local disk of the machine doing the build. You
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   225
should add its <code>bin</code> directory to the <code>PATH</code> environment variable. If
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   226
<code>configure</code> has any issues finding this JDK, you may need to use the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   227
<code>configure</code> option <code>--with-boot-jdk</code>.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   228
<li><p>Ensure that GNU make, the Bootstrap JDK, and the compilers are all in your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   229
PATH environment variable.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   230
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   231
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   232
<p>And for specific systems:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   233
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   234
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   235
<li><p><strong>Linux</strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   236
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   237
<p>Install all the software development packages needed including
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   238
<a href="#alsa">alsa</a>, <a href="#freetype">freetype</a>, <a href="#cups">cups</a>, and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   239
<a href="#xrender">xrender</a>. See <a href="#SDBE">specific system packages</a>.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   240
<li><p><strong>Solaris</strong></p>
18049
ab1fcd9738e8 8016780: README-builds.html misses crucial requirement on bootstrap JDK
smarks
parents: 15787
diff changeset
   241
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   242
<p>Install all the software development packages needed including <a href="#studio">Studio
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   243
Compilers</a>, <a href="#freetype">freetype</a>, <a href="#cups">cups</a>, and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   244
<a href="#xrender">xrender</a>. See <a href="#SDBE">specific system packages</a>.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   245
<li><p><strong>Windows</strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   246
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   247
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   248
<li>Install one of <a href="#cygwin">CYGWIN</a> or <a href="#msys">MinGW/MSYS</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   249
<li>Install <a href="#vs2013">Visual Studio 2013</a></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   250
</ul></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   251
<li><p><strong>Mac OS X</strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   252
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   253
<p>Install <a href="https://developer.apple.com/xcode/">XCode 6.3</a></p></li>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   254
</ul>
18049
ab1fcd9738e8 8016780: README-builds.html misses crucial requirement on bootstrap JDK
smarks
parents: 15787
diff changeset
   255
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   256
<p><a name="linux"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   257
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   258
<h4>Linux</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   259
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   260
<p>With Linux, try and favor the system packages over building your own or getting
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   261
packages from other areas. Most Linux builds should be possible with the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   262
system's available packages.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   263
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   264
<p>Note that some Linux systems have a habit of pre-populating your environment
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   265
variables for you, for example <code>JAVA_HOME</code> might get pre-defined for you to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   266
refer to the JDK installed on your Linux system. You will need to unset
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   267
<code>JAVA_HOME</code>. It's a good idea to run <code>env</code> and verify the environment variables
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   268
you are getting from the default system settings make sense for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   269
OpenJDK.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   270
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   271
<p><a name="solaris"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   272
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   273
<h4>Solaris</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   274
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   275
<p><a name="studio"></a></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   276
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   277
<h5>Studio Compilers</h5>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   278
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   279
<p>At a minimum, the <a href="http://www.oracle.com/
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   280
technetwork/server-storage/solarisstudio/downloads/index.htm">Studio 12 Update 4 Compilers</a> (containing
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   281
version 5.13 of the C and C++ compilers) is required, including specific
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   282
patches.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   283
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   284
<p>The Solaris Studio installation should contain at least these packages:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   285
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   286
<blockquote>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   287
  <p><table border="1">
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   288
     <thead>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   289
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   290
         <td><strong>Package</strong></td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   291
         <td><strong>Version</strong></td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   292
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   293
     </thead>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   294
     <tbody>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   295
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   296
         <td>developer/solarisstudio-124/backend</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   297
         <td>12.4-1.0.6.0</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   298
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   299
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   300
         <td>developer/solarisstudio-124/c++</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   301
         <td>12.4-1.0.10.0</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   302
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   303
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   304
         <td>developer/solarisstudio-124/cc</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   305
         <td>12.4-1.0.4.0</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   306
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   307
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   308
         <td>developer/solarisstudio-124/library/c++-libs</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   309
         <td>12.4-1.0.10.0</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   310
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   311
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   312
         <td>developer/solarisstudio-124/library/math-libs</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   313
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   314
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   315
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   316
         <td>developer/solarisstudio-124/library/studio-gccrt</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   317
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   318
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   319
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   320
         <td>developer/solarisstudio-124/studio-common</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   321
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   322
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   323
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   324
         <td>developer/solarisstudio-124/studio-ja</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   325
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   326
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   327
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   328
         <td>developer/solarisstudio-124/studio-legal</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   329
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   330
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   331
       <tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   332
         <td>developer/solarisstudio-124/studio-zhCN</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   333
         <td>12.4-1.0.0.1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   334
       </tr>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   335
     </tbody>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   336
   </table></p>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   337
</blockquote>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   338
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   339
<p>In particular backend 12.4-1.0.6.0 contains a critical patch for the sparc
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   340
version.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   341
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   342
<p>Place the <code>bin</code> directory in <code>PATH</code>.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   343
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   344
<p>The Oracle Solaris Studio Express compilers at: <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   345
downloads/index-jsp-142582.html">Oracle Solaris Studio Express
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   346
Download site</a> are also an option, although these compilers
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   347
have not been extensively used yet.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   348
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   349
<p><a name="windows"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   350
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   351
<h4>Windows</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   352
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   353
<h5>Windows Unix Toolkit</h5>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   354
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   355
<p>Building on Windows requires a Unix-like environment, notably a Unix-like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   356
shell. There are several such environments available of which
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   357
<a href="http://www.cygwin.com/">Cygwin</a> and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   358
<a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   359
OpenJDK build. One of the differences of these systems from standard Windows
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   360
tools is the way they handle Windows path names, particularly path names which
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   361
contain spaces, backslashes as path separators and possibly drive letters.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   362
Depending on the use case and the specifics of each environment these path
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   363
problems can be solved by a combination of quoting whole paths, translating
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   364
backslashes to forward slashes, escaping backslashes with additional
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   365
backslashes and translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename">"8.3"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   366
version</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   367
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   368
<p><a name="cygwin"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   369
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   370
<h6>CYGWIN</h6>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   371
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   372
<p>CYGWIN is an open source, Linux-like environment which tries to emulate a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   373
complete POSIX layer on Windows. It tries to be smart about path names and can
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   374
usually handle all kinds of paths if they are correctly quoted or escaped
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   375
although internally it maps drive letters <code>&lt;drive&gt;:</code> to a virtual directory
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   376
<code>/cygdrive/&lt;drive&gt;</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   377
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   378
<p>You can always use the <code>cygpath</code> utility to map pathnames with spaces or the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   379
backslash character into the <code>C:/</code> style of pathname (called 'mixed'), e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   380
<code>cygpath -s -m "&lt;path&gt;"</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   381
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   382
<p>Note that the use of CYGWIN creates a unique problem with regards to setting
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   383
<a href="#path"><code>PATH</code></a>. Normally on Windows the <code>PATH</code> variable contains directories
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   384
separated with the ";" character (Solaris and Linux use ":"). With CYGWIN, it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   385
uses ":", but that means that paths like "C:/path" cannot be placed in the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   386
CYGWIN version of <code>PATH</code> and instead CYGWIN uses something like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   387
<code>/cygdrive/c/path</code> which CYGWIN understands, but only CYGWIN understands.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   388
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   389
<p>The OpenJDK build requires CYGWIN version 1.7.16 or newer. Information about
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   390
CYGWIN can be obtained from the CYGWIN website at
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   391
<a href="http://www.cygwin.com">www.cygwin.com</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   392
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   393
<p>By default CYGWIN doesn't install all the tools required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   394
OpenJDK. Along with the default installation, you need to install the following
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   395
tools.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   396
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   397
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   398
  <p><table border="1">
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   399
     <thead>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   400
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   401
         <td>Binary Name</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   402
         <td>Category</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   403
         <td>Package</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   404
         <td>Description</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   405
      </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   406
     </thead>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   407
     <tbody>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   408
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   409
         <td>ar.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   410
         <td>Devel</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   411
         <td>binutils</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   412
         <td>The GNU assembler, linker and binary utilities</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   413
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   414
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   415
         <td>make.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   416
         <td>Devel</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   417
         <td>make</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   418
         <td>The GNU version of the 'make' utility built for CYGWIN</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   419
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   420
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   421
         <td>m4.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   422
         <td>Interpreters</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   423
         <td>m4</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   424
         <td>GNU implementation of the traditional Unix macro processor</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   425
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   426
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   427
         <td>cpio.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   428
         <td>Utils</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   429
         <td>cpio</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   430
         <td>A program to manage archives of files</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   431
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   432
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   433
         <td>gawk.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   434
         <td>Utils</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   435
         <td>awk</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   436
         <td>Pattern-directed scanning and processing language</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   437
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   438
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   439
         <td>file.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   440
         <td>Utils</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   441
         <td>file</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   442
         <td>Determines file type using 'magic' numbers</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   443
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   444
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   445
         <td>zip.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   446
         <td>Archive</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   447
         <td>zip</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   448
         <td>Package and compress (archive) files</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   449
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   450
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   451
         <td>unzip.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   452
         <td>Archive</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   453
         <td>unzip</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   454
         <td>Extract compressed files in a ZIP archive</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   455
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   456
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   457
         <td>free.exe</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   458
         <td>System</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   459
         <td>procps</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   460
         <td>Display amount of free and used memory in the system</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   461
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   462
     </tbody>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   463
   </table></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   464
</blockquote>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   465
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   466
<p>Note that the CYGWIN software can conflict with other non-CYGWIN software on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   467
your Windows system. CYGWIN provides a <a href="http://cygwin.com/faq/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   468
faq.using.html">FAQ</a> for known issues and problems, of particular interest is the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   469
section on <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda">BLODA (applications that interfere with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   470
CYGWIN)</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   471
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   472
<p><a name="msys"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   473
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   474
<h6>MinGW/MSYS</h6>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   475
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   476
<p>MinGW ("Minimalist GNU for Windows") is a collection of free Windows specific
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   477
header files and import libraries combined with GNU toolsets that allow one to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   478
produce native Windows programs that do not rely on any 3rd-party C runtime
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   479
DLLs. MSYS is a supplement to MinGW which allows building applications and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   480
programs which rely on traditional UNIX tools to be present. Among others this
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   481
includes tools like <code>bash</code> and <code>make</code>. See <a href="http://www.mingw.org/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   482
wiki/MSYS">MinGW/MSYS</a> for more information.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   483
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   484
<p>Like Cygwin, MinGW/MSYS can handle different types of path formats. They are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   485
internally converted to paths with forward slashes and drive letters
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   486
<code>&lt;drive&gt;:</code> replaced by a virtual directory <code>/&lt;drive&gt;</code>. Additionally, MSYS
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   487
automatically detects binaries compiled for the MSYS environment and feeds them
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   488
with the internal, Unix-style path names. If native Windows applications are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   489
called from within MSYS programs their path arguments are automatically
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   490
converted back to Windows style path names with drive letters and backslashes
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   491
as path separators. This may cause problems for Windows applications which use
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   492
forward slashes as parameter separator (e.g. <code>cl /nologo /I</code>) because MSYS may
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   493
wrongly <a href="http://mingw.org/wiki/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   494
Posix_path_conversion">replace such parameters by drive letters</a>.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   495
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   496
<p>In addition to the tools which will be installed by default, you have to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   497
manually install the <code>msys-zip</code> and <code>msys-unzip</code> packages. This can be easily
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   498
done with the MinGW command line installer:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   499
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   500
<pre><code>  mingw-get.exe install msys-zip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   501
  mingw-get.exe install msys-unzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   502
</code></pre>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   503
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   504
<p><a name="vs2013"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   505
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   506
<h5>Visual Studio 2013 Compilers</h5>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   507
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   508
<p>The 32-bit and 64-bit OpenJDK Windows build requires Microsoft Visual Studio
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   509
C++ 2013 (VS2013) Professional Edition or Express compiler. The compiler and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   510
other tools are expected to reside in the location defined by the variable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   511
<code>VS120COMNTOOLS</code> which is set by the Microsoft Visual Studio installer.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   512
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   513
<p>Only the C++ part of VS2013 is needed. Try to let the installation go to the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   514
default install directory. Always reboot your system after installing VS2013.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   515
The system environment variable VS120COMNTOOLS should be set in your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   516
environment.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   517
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   518
<p>Make sure that TMP and TEMP are also set in the environment and refer to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   519
Windows paths that exist, like <code>C:\temp</code>, not <code>/tmp</code>, not <code>/cygdrive/c/temp</code>,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   520
and not <code>C:/temp</code>. <code>C:\temp</code> is just an example, it is assumed that this area
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   521
is private to the user, so by default after installs you should see a unique
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   522
user path in these variables.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   523
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   524
<p><a name="macosx"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   525
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   526
<h4>Mac OS X</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   527
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   528
<p>Make sure you get the right XCode version.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   529
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   530
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   531
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   532
<p><a name="configure"></a></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   533
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   534
<h3>Configure</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   535
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   536
<p>The basic invocation of the <code>configure</code> script looks like:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   537
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   538
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   539
  <p><strong><code>bash ./configure [options]</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   540
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   541
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   542
<p>This will create an output directory containing the "configuration" and setup
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   543
an area for the build result. This directory typically looks like:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   544
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   545
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   546
  <p><strong><code>build/linux-x64-normal-server-release</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   547
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   548
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   549
<p><code>configure</code> will try to figure out what system you are running on and where all
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   550
necessary build components are. If you have all prerequisites for building
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   551
installed, it should find everything. If it fails to detect any component
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   552
automatically, it will exit and inform you about the problem. When this
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   553
happens, read more below in <a href="#configureoptions">the <code>configure</code> options</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   554
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   555
<p>Some examples:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   556
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   557
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   558
  <p><strong>Windows 32bit build with freetype specified:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   559
 <code>bash ./configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   560
bits=32</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   561
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   562
<p><strong>Debug 64bit Build:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   563
 <code>bash ./configure --enable-debug --with-target-bits=64</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   564
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   565
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   566
<p><a name="configureoptions"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   567
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   568
<h4>Configure Options</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   569
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   570
<p>Complete details on all the OpenJDK <code>configure</code> options can be seen with:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   571
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   572
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   573
  <p><strong><code>bash ./configure --help=short</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   574
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   575
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   576
<p>Use <code>-help</code> to see all the <code>configure</code> options available. You can generate any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   577
number of different configurations, e.g. debug, release, 32, 64, etc.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   578
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   579
<p>Some of the more commonly used <code>configure</code> options are:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   580
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   581
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   582
  <p><strong><code>--enable-debug</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   583
 set the debug level to fastdebug (this is a shorthand for <code>--with-debug-
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   584
   level=fastdebug</code>)</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   585
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   586
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   587
<p><a name="alsa"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   588
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   589
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   590
  <p><strong><code>--with-alsa=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   591
 select the location of the Advanced Linux Sound Architecture (ALSA)</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   592
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   593
<p>Version 0.9.1 or newer of the ALSA files are required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   594
   OpenJDK on Linux. These Linux files are usually available from an "alsa" of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   595
   "libasound" development package, and it's highly recommended that you try
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   596
   and use the package provided by the particular version of Linux that you are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   597
   using.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   598
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   599
<p><strong><code>--with-boot-jdk=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   600
 select the <a href="#bootjdk">Bootstrap JDK</a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   601
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   602
<p><strong><code>--with-boot-jdk-jvmargs=</code></strong>"<em>args</em>" <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   603
 provide the JVM options to be used to run the <a href="#bootjdk">Bootstrap JDK</a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   604
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   605
<p><strong><code>--with-cacerts=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   606
 select the path to the cacerts file.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   607
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   608
<p>See <a href="http://en.wikipedia.org/wiki/
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   609
   Certificate_Authority">Certificate Authority on Wikipedia</a> for a better understanding of the Certificate
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   610
   Authority (CA). A certificates file named "cacerts" represents a system-wide
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   611
   keystore with CA certificates. In JDK and JRE binary bundles, the "cacerts"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   612
   file contains root CA certificates from several public CAs (e.g., VeriSign,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   613
   Thawte, and Baltimore). The source contain a cacerts file without CA root
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   614
   certificates. Formal JDK builders will need to secure permission from each
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   615
   public CA and include the certificates into their own custom cacerts file.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   616
   Failure to provide a populated cacerts file will result in verification
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   617
   errors of a certificate chain during runtime. By default an empty cacerts
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   618
   file is provided and that should be fine for most JDK developers.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   619
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   620
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   621
<p><a name="cups"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   622
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   623
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   624
  <p><strong><code>--with-cups=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   625
 select the CUPS install location</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   626
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   627
<p>The Common UNIX Printing System (CUPS) Headers are required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   628
   OpenJDK on Solaris and Linux. The Solaris header files can be obtained by
41039
54596b00162b 8165163: Solaris11 and onwards provide CUPS by default, references to csw and sfw versions should be removed
alanbur
parents: 34595
diff changeset
   629
   installing the package <strong>print/cups</strong>.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   630
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   631
<p>The CUPS header files can always be downloaded from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   632
   <a href="http://www.cups.org">www.cups.org</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   633
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   634
<p><strong><code>--with-cups-include=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   635
 select the CUPS include directory location</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   636
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   637
<p><strong><code>--with-debug-level=</code></strong><em>level</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   638
 select the debug information level of release, fastdebug, or slowdebug</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   639
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   640
<p><strong><code>--with-dev-kit=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   641
 select location of the compiler install or developer install location</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   642
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   643
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   644
<p><a name="freetype"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   645
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   646
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   647
  <p><strong><code>--with-freetype=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   648
 select the freetype files to use.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   649
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   650
<p>Expecting the freetype libraries under <code>lib/</code> and the headers under
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   651
   <code>include/</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   652
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   653
<p>Version 2.3 or newer of FreeType is required. On Unix systems required files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   654
   can be available as part of your distribution (while you still may need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   655
   upgrade them). Note that you need development version of package that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   656
   includes both the FreeType library and header files.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   657
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   658
<p>You can always download latest FreeType version from the <a href="http://www.freetype.org">FreeType
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   659
   website</a>. Building the freetype 2 libraries from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   660
   scratch is also possible, however on Windows refer to the <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">Windows FreeType
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   661
   DLL build instructions</a>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   662
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   663
<p>Note that by default FreeType is built with byte code hinting support
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   664
   disabled due to licensing restrictions. In this case, text appearance and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   665
   metrics are expected to differ from Sun's official JDK build. See the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   666
   <a href="http://freetype.sourceforge.net/freetype2">SourceForge FreeType2 Home Page</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   667
   for more information.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   668
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   669
<p><strong><code>--with-import-hotspot=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   670
 select the location to find hotspot binaries from a previous build to avoid
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   671
   building hotspot</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   672
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   673
<p><strong><code>--with-target-bits=</code></strong><em>arg</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   674
 select 32 or 64 bit build</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   675
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   676
<p><strong><code>--with-jvm-variants=</code></strong><em>variants</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   677
 select the JVM variants to build from, comma separated list that can
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   678
   include: server, client, kernel, zero and zeroshark</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   679
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   680
<p><strong><code>--with-memory-size=</code></strong><em>size</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   681
 select the RAM size that GNU make will think this system has</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   682
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   683
<p><strong><code>--with-msvcr-dll=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   684
 select the <code>msvcr100.dll</code> file to include in the Windows builds (C/C++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   685
   runtime library for Visual Studio).</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   686
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   687
<p>This is usually picked up automatically from the redist directories of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   688
   Visual Studio 2013.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   689
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   690
<p><strong><code>--with-num-cores=</code></strong><em>cores</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   691
 select the number of cores to use (processor count or CPU count)</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   692
</blockquote>
8646
f07e5ed381a8 6896934: README: Document how the drop source bundles work for jaxp/jaxws
ohair
parents: 8057
diff changeset
   693
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   694
<p><a name="xrender"></a></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   695
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   696
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   697
  <p><strong><code>--with-x=</code></strong><em>path</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   698
 select the location of the X11 and xrender files.</p>
8646
f07e5ed381a8 6896934: README: Document how the drop source bundles work for jaxp/jaxws
ohair
parents: 8057
diff changeset
   699
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   700
<p>The XRender Extension Headers are required for building the OpenJDK on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   701
   Solaris and Linux. The Linux header files are usually available from a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   702
   "Xrender" development package, it's recommended that you try and use the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   703
   package provided by the particular distribution of Linux that you are using.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   704
   The Solaris XRender header files is included with the other X11 header files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   705
   in the package <strong>SFWxwinc</strong> on new enough versions of Solaris and will be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   706
   installed in <code>/usr/X11/include/X11/extensions/Xrender.h</code> or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   707
   <code>/usr/openwin/share/include/X11/extensions/Xrender.h</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   708
</blockquote>
19525
9dac5000c015 8023957: Lock down version of autoconf
erikj
parents: 19314
diff changeset
   709
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   710
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   711
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   712
<p><a name="make"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   713
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   714
<h3>Make</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   715
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   716
<p>The basic invocation of the <code>make</code> utility looks like:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   717
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   718
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   719
  <p><strong><code>make all</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   720
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   721
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   722
<p>This will start the build to the output directory containing the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   723
"configuration" that was created by the <code>configure</code> script. Run <code>make help</code> for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   724
more information on the available targets.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   725
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   726
<p>There are some of the make targets that are of general interest:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   727
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   728
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   729
  <p><em>empty</em> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   730
 build everything but no images</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   731
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   732
<p><strong><code>all</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   733
 build everything including images</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   734
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   735
<p><strong><code>all-conf</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   736
 build all configurations</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   737
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   738
<p><strong><code>images</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   739
 create complete j2sdk and j2re images</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   740
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   741
<p><strong><code>install</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   742
 install the generated images locally, typically in <code>/usr/local</code></p>
8646
f07e5ed381a8 6896934: README: Document how the drop source bundles work for jaxp/jaxws
ohair
parents: 8057
diff changeset
   743
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   744
<p><strong><code>clean</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   745
 remove all files generated by make, but not those generated by <code>configure</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   746
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   747
<p><strong><code>dist-clean</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   748
 remove all files generated by both and <code>configure</code> (basically killing the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   749
   configuration)</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   750
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   751
<p><strong><code>help</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   752
 give some help on using <code>make</code>, including some interesting make targets</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   753
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   754
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   755
<hr />
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   756
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   757
<p><a name="testing"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   758
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   759
<h2>Testing</h2>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   760
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   761
<p>When the build is completed, you should see the generated binaries and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   762
associated files in the <code>j2sdk-image</code> directory in the output directory. In
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   763
particular, the <code>build/*/images/j2sdk-image/bin</code> directory should contain
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   764
executables for the OpenJDK tools and utilities for that configuration. The
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   765
testing tool <code>jtreg</code> will be needed and can be found at: <a href="http://openjdk.java.net/jtreg/">the jtreg
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   766
site</a>. The provided regression tests in the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   767
repositories can be run with the command:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   768
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   769
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   770
  <p><strong><code>cd test &amp;&amp; make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all</code></strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   771
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   772
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   773
<hr />
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   774
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   775
<p><a name="hints"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   776
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   777
<h2>Appendix A: Hints and Tips</h2>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   778
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   779
<p><a name="faq"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   780
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   781
<h3>FAQ</h3>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   782
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   783
<p><strong>Q:</strong> The <code>generated-configure.sh</code> file looks horrible! How are you going to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   784
edit it? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   785
<strong>A:</strong> The <code>generated-configure.sh</code> file is generated (think "compiled") by the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   786
autoconf tools. The source code is in <code>configure.ac</code> and various .m4 files in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   787
common/autoconf, which are much more readable.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   788
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   789
<p><strong>Q:</strong> Why is the <code>generated-configure.sh</code> file checked in, if it is 
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   790
generated? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   791
<strong>A:</strong> If it was not generated, every user would need to have the autoconf
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   792
tools installed, and re-generate the <code>configure</code> file as the first step. Our
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   793
goal is to minimize the work needed to be done by the user to start building
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   794
OpenJDK, and to minimize the number of external dependencies required.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   795
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   796
<p><strong>Q:</strong> Do you require a specific version of autoconf for regenerating
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   797
<code>generated-configure.sh</code>? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   798
<strong>A:</strong> Yes, version 2.69 is required and should be easy enough to aquire on all
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   799
supported operating systems. The reason for this is to avoid large spurious
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   800
changes in <code>generated-configure.sh</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   801
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   802
<p><strong>Q:</strong> How do you regenerate <code>generated-configure.sh</code> after making changes to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   803
the input files? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   804
<strong>A:</strong> Regnerating <code>generated-configure.sh</code> should always be done using the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   805
script <code>common/autoconf/autogen.sh</code> to ensure that the correct files get
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   806
updated. This script should also be run after mercurial tries to merge
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   807
<code>generated-configure.sh</code> as a merge of the generated file is not guaranteed to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   808
be correct.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   809
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   810
<p><strong>Q:</strong> What are the files in <code>common/makefiles/support/*</code> for? They look like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   811
gibberish. <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   812
<strong>A:</strong> They are a somewhat ugly hack to compensate for command line length
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   813
limitations on certain platforms (Windows, Solaris). Due to a combination of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   814
limitations in make and the shell, command lines containing too many files will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   815
not work properly. These helper files are part of an elaborate hack that will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   816
compress the command line in the makefile and then uncompress it safely. We're
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   817
not proud of it, but it does fix the problem. If you have any better
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   818
suggestions, we're all ears! :-)</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   819
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   820
<p><strong>Q:</strong> I want to see the output of the commands that make runs, like in the old
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   821
build. How do I do that? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   822
<strong>A:</strong> You specify the <code>LOG</code> variable to make. There are several log levels:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   823
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   824
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   825
<li><strong><code>warn</code></strong> -- Default and very quiet.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   826
<li><strong><code>info</code></strong> -- Shows more progress information than warn.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   827
<li><strong><code>debug</code></strong> -- Echos all command lines and prints all macro calls for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   828
compilation definitions.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   829
<li><strong><code>trace</code></strong> -- Echos all $(shell) command lines as well.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   830
</ul>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   831
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   832
<p><strong>Q:</strong> When do I have to re-run <code>configure</code>? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   833
<strong>A:</strong> Normally you will run <code>configure</code> only once for creating a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   834
configuration. You need to re-run configuration only if you want to change any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   835
configuration options, or if you pull down changes to the <code>configure</code> script.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   836
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   837
<p><strong>Q:</strong> I have added a new source file. Do I need to modify the makefiles? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   838
<strong>A:</strong> Normally, no. If you want to create e.g. a new native library, you will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   839
need to modify the makefiles. But for normal file additions or removals, no
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   840
changes are needed. There are certan exceptions for some native libraries where
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   841
the source files are spread over many directories which also contain sources
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   842
for other libraries. In these cases it was simply easier to create include
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   843
lists rather than excludes.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   844
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   845
<p><strong>Q:</strong> When I run <code>configure --help</code>, I see many strange options, like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   846
<code>--dvidir</code>. What is this? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   847
<strong>A:</strong> Configure provides a slew of options by default, to all projects that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   848
use autoconf. Most of them are not used in OpenJDK, so you can safely ignore
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   849
them. To list only OpenJDK specific features, use <code>configure --help=short</code>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   850
instead.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   851
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   852
<p><strong>Q:</strong> <code>configure</code> provides OpenJDK-specific features such as <code>--with-
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   853
builddeps-server</code> that are not described in this document. What about those? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   854
<strong>A:</strong> Try them out if you like! But be aware that most of these are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   855
experimental features. Many of them don't do anything at all at the moment; the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   856
option is just a placeholder. Others depend on pieces of code or infrastructure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   857
that is currently not ready for prime time.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   858
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   859
<p><strong>Q:</strong> How will you make sure you don't break anything? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   860
<strong>A:</strong> We have a script that compares the result of the new build system with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   861
the result of the old. For most part, we aim for (and achieve) byte-by-byte
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   862
identical output. There are however technical issues with e.g. native binaries,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   863
which might differ in a byte-by-byte comparison, even when building twice with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   864
the old build system. For these, we compare relevant aspects (e.g. the symbol
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   865
table and file size). Note that we still don't have 100% equivalence, but we're
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   866
close.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   867
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   868
<p><strong>Q:</strong> I noticed this thing X in the build that looks very broken by design.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   869
Why don't you fix it? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   870
<strong>A:</strong> Our goal is to produce a build output that is as close as technically
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   871
possible to the old build output. If things were weird in the old build, they
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   872
will be weird in the new build. Often, things were weird before due to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   873
obscurity, but in the new build system the weird stuff comes up to the surface.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   874
The plan is to attack these things at a later stage, after the new build system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   875
is established.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   876
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   877
<p><strong>Q:</strong> The code in the new build system is not that well-structured. Will you
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   878
fix this? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   879
<strong>A:</strong> Yes! The new build system has grown bit by bit as we converted the old
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   880
system. When all of the old build system is converted, we can take a step back
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   881
and clean up the structure of the new build system. Some of this we plan to do
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   882
before replacing the old build system and some will need to wait until after.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   883
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   884
<p><strong>Q:</strong> Is anything able to use the results of the new build's default make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   885
target? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   886
<strong>A:</strong> Yes, this is the minimal (or roughly minimal) set of compiled output
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   887
needed for a developer to actually execute the newly built JDK. The idea is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   888
that in an incremental development fashion, when doing a normal make, you
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   889
should only spend time recompiling what's changed (making it purely
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   890
incremental) and only do the work that's needed to actually run and test your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   891
code. The packaging stuff that is part of the <code>images</code> target is not needed for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   892
a normal developer who wants to test his new code. Even if it's quite fast,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   893
it's still unnecessary. We're targeting sub-second incremental rebuilds! ;-)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   894
(Or, well, at least single-digit seconds...)</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   895
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   896
<p><strong>Q:</strong> I usually set a specific environment variable when building, but I can't
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   897
find the equivalent in the new build. What should I do? <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   898
<strong>A:</strong> It might very well be that we have neglected to add support for an
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   899
option that was actually used from outside the build system. Email us and we
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   900
will add support for it!</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   901
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   902
<p><a name="performance"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   903
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   904
<h3>Build Performance Tips</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   905
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   906
<p>Building OpenJDK requires a lot of horsepower. Some of the build tools can be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   907
adjusted to utilize more or less of resources such as parallel threads and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   908
memory. The <code>configure</code> script analyzes your system and selects reasonable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   909
values for such options based on your hardware. If you encounter resource
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   910
problems, such as out of memory conditions, you can modify the detected values
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   911
with:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   912
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   913
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   914
<li><strong><code>--with-num-cores</code></strong> -- number of cores in the build system, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   915
<code>--with-num-cores=8</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   916
<li><strong><code>--with-memory-size</code></strong> -- memory (in MB) available in the build system,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   917
e.g. <code>--with-memory-size=1024</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   918
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   919
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   920
<p>It might also be necessary to specify the JVM arguments passed to the Bootstrap
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   921
JDK, using e.g. <code>--with-boot-jdk-jvmargs="-Xmx8G -enableassertions"</code>. Doing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   922
this will override the default JVM arguments passed to the Bootstrap JDK.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   923
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   924
<p>One of the top goals of the new build system is to improve the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   925
performance and decrease the time needed to build. This will soon also apply to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   926
the java compilation when the Smart Javac wrapper is fully supported.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   927
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   928
<p>At the end of a successful execution of <code>configure</code>, you will get a performance
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   929
summary, indicating how well the build will perform. Here you will also get
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   930
performance hints. If you want to build fast, pay attention to those!</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   931
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   932
<h4>Building with ccache</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   933
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   934
<p>The OpenJDK build supports building with ccache when using gcc or clang. Using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   935
ccache can radically speed up compilation of native code if you often rebuild
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   936
the same sources. Your milage may vary however so we recommend evaluating it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   937
for yourself. To enable it, make sure it's on the path and configure with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   938
<code>--enable-ccache</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   939
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   940
<h4>Building on local disk</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   941
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   942
<p>If you are using network shares, e.g. via NFS, for your source code, make sure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   943
the build directory is situated on local disk. The performance penalty is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   944
extremely high for building on a network share, close to unusable.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   945
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   946
<h4>Building only one JVM</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   947
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   948
<p>The old build builds multiple JVMs on 32-bit systems (client and server; and on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   949
Windows kernel as well). In the new build we have changed this default to only
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   950
build server when it's available. This improves build times for those not
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   951
interested in multiple JVMs. To mimic the old behavior on platforms that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   952
support it, use <code>--with-jvm-variants=client,server</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   953
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   954
<h4>Selecting the number of cores to build on</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   955
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   956
<p>By default, <code>configure</code> will analyze your machine and run the make process in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   957
parallel with as many threads as you have cores. This behavior can be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   958
overridden, either "permanently" (on a <code>configure</code> basis) using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   959
<code>--with-num-cores=N</code> or for a single build only (on a make basis), using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   960
<code>make JOBS=N</code>.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   961
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   962
<p>If you want to make a slower build just this time, to save some CPU power for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   963
other processes, you can run e.g. <code>make JOBS=2</code>. This will force the makefiles
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   964
to only run 2 parallel processes, or even <code>make JOBS=1</code> which will disable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   965
parallelism.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   966
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   967
<p>If you want to have it the other way round, namely having slow builds default
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   968
and override with fast if you're impatient, you should call <code>configure</code> with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   969
<code>--with-num-cores=2</code>, making 2 the default. If you want to run with more cores,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   970
run <code>make JOBS=8</code></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
   971
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   972
<p><a name="troubleshooting"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   973
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   974
<h3>Troubleshooting</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   975
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   976
<h4>Solving build problems</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   977
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   978
<p>If the build fails (and it's not due to a compilation error in a source file
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   979
you've changed), the first thing you should do is to re-run the build with more
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   980
verbosity. Do this by adding <code>LOG=debug</code> to your make command line.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   981
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   982
<p>The build log (with both stdout and stderr intermingled, basically the same as
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   983
you see on your console) can be found as <code>build.log</code> in your build directory.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   984
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   985
<p>You can ask for help on build problems with the new build system on either the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   986
<a href="http://mail.openjdk.java.net/mailman/listinfo/build-dev">build-dev</a> or the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   987
<a href="http://mail.openjdk.java.net/mailman/listinfo/build-infra-dev">build-infra-dev</a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   988
mailing lists. Please include the relevant parts of the build log.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   989
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   990
<p>A build can fail for any number of reasons. Most failures are a result of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   991
trying to build in an environment in which all the pre-build requirements have
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   992
not been met. The first step in troubleshooting a build failure is to recheck
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   993
that you have satisfied all the pre-build requirements for your platform.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   994
Scanning the <code>configure</code> log is a good first step, making sure that what it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   995
found makes sense for your system. Look for strange error messages or any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   996
difficulties that <code>configure</code> had in finding things.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   997
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   998
<p>Some of the more common problems with builds are briefly described below, with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
   999
suggestions for remedies.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1000
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1001
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1002
<li><p><strong>Corrupted Bundles on Windows:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1003
Some virus scanning software has been known to corrupt the downloading of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1004
zip bundles. It may be necessary to disable the 'on access' or 'real time'
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1005
virus scanning features to prevent this corruption. This type of 'real time'
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1006
virus scanning can also slow down the build process significantly.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1007
Temporarily disabling the feature, or excluding the build output directory
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1008
may be necessary to get correct and faster builds.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1009
<li><p><strong>Slow Builds:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1010
If your build machine seems to be overloaded from too many simultaneous C++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1011
compiles, try setting the <code>JOBS=1</code> on the <code>make</code> command line. Then try
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1012
increasing the count slowly to an acceptable level for your system. Also:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1013
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1014
<p>Creating the javadocs can be very slow, if you are running javadoc, consider
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1015
skipping that step.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1016
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1017
<p>Faster CPUs, more RAM, and a faster DISK usually helps. The VM build tends
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1018
to be CPU intensive (many C++ compiles), and the rest of the JDK will often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1019
be disk intensive.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1020
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1021
<p>Faster compiles are possible using a tool called
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1022
<a href="http://ccache.samba.org/">ccache</a>.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1023
<li><p><strong>File time issues:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1024
If you see warnings that refer to file time stamps, e.g.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1025
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1026
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1027
  <p><em>Warning message:</em> <code>File 'xxx' has modification time in the future.</code> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1028
<em>Warning message:</em> <code>Clock skew detected. Your build may be incomplete.</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1029
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1031
<p>These warnings can occur when the clock on the build machine is out of sync
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1032
with the timestamps on the source files. Other errors, apparently unrelated
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1033
but in fact caused by the clock skew, can occur along with the clock skew
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1034
warnings. These secondary errors may tend to obscure the fact that the true
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1035
root cause of the problem is an out-of-sync clock.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1036
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1037
<p>If you see these warnings, reset the clock on the build machine, run
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1038
"<code>gmake clobber</code>" or delete the directory containing the build output, and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1039
restart the build from the beginning.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1040
<li><p><strong>Error message: <code>Trouble writing out table to disk</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1041
Increase the amount of swap space on your build machine. This could be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1042
caused by overloading the system and it may be necessary to use:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1043
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1044
<blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1045
  <p><code>make JOBS=1</code></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1046
</blockquote>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1047
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1048
<p>to reduce the load on the system.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1049
<li><p><strong>Error Message: <code>libstdc++ not found</code>:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1050
This is caused by a missing libstdc++.a library. This is installed as part
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1051
of a specific package (e.g. libstdc++.so.devel.386). By default some 64-bit
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1052
Linux versions (e.g. Fedora) only install the 64-bit version of the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1053
libstdc++ package. Various parts of the JDK build require a static link of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1054
the C++ runtime libraries to allow for maximum portability of the built
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1055
images.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1056
<li><p><strong>Linux Error Message: <code>cannot restore segment prot after reloc</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1057
This is probably an issue with SELinux (See <a href="http://en.wikipedia.org/wiki/SELinux">SELinux on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1058
Wikipedia</a>). Parts of the VM is built
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1059
without the <code>-fPIC</code> for performance reasons.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1060
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1061
<p>To completely disable SELinux:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1062
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1063
<ol>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1064
<li><code>$ su root</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1065
<li><code># system-config-securitylevel</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1066
<li><code>In the window that appears, select the SELinux tab</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1067
<li><code>Disable SELinux</code></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1068
</ol>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1069
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1070
<p>Alternatively, instead of completely disabling it you could disable just
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1071
this one check.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1072
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1073
<ol>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1074
<li>Select System->Administration->SELinux Management</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1075
<li>In the SELinux Management Tool which appears, select "Boolean" from the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1076
menu on the left</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1077
<li>Expand the "Memory Protection" group</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1078
<li>Check the first item, labeled "Allow all unconfined executables to use
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1079
libraries requiring text relocation ..."</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1080
</ol></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1081
<li><p><strong>Windows Error Messages:</strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1082
<code>*** fatal error - couldn't allocate heap, ...</code> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1083
<code>rm fails with "Directory not empty"</code> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1084
<code>unzip fails with "cannot create ... Permission denied"</code> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1085
<code>unzip fails with "cannot create ... Error 50"</code></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1086
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1087
<p>The CYGWIN software can conflict with other non-CYGWIN software. See the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1088
CYGWIN FAQ section on <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda">BLODA (applications that interfere with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1089
CYGWIN)</a>.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1090
<li><p><strong>Windows Error Message: <code>spawn failed</code></strong> <br />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1091
Try rebooting the system, or there could be some kind of issue with the disk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1092
or disk partition being used. Sometimes it comes with a "Permission Denied"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1093
message.</p></li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1094
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1095
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1096
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1097
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1098
<p><a name="gmake"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1099
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1100
<h2>Appendix B: GNU make</h2>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1101
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1102
<p>The Makefiles in the OpenJDK are only valid when used with the GNU version of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1103
the utility command <code>make</code> (usually called <code>gmake</code> on Solaris). A few notes
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1104
about using GNU make:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1105
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1106
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1107
<li>You need GNU make version 3.81 or newer. On Windows 4.0 or newer is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1108
recommended. If the GNU make utility on your systems is not of a suitable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1109
version, see "<a href="#buildgmake">Building GNU make</a>".</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1110
<li>Place the location of the GNU make binary in the <code>PATH</code>.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1111
<li><strong>Solaris:</strong> Do NOT use <code>/usr/bin/make</code> on Solaris. If your Solaris system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1112
has the software from the Solaris Developer Companion CD installed, you
41040
7b919a4497ff 8165161: Solaris: /usr/ccs /opt/sfw and /opt/csw are dead, references should be expunged
alanbur
parents: 41039
diff changeset
  1113
should try and use <code>/usr/bin/gmake</code> or <code>/usr/gnu/bin/make</code>.</li>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1114
<li><strong>Windows:</strong> Make sure you start your build inside a bash shell.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1115
<li><strong>Mac OS X:</strong> The XCode "command line tools" must be installed on your Mac.</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1116
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1117
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1118
<p>Information on GNU make, and access to ftp download sites, are available on the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1119
<a href="http://www.gnu.org/software/make/make.html">GNU make web site </a>. The latest
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1120
source to GNU make is available at
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1121
<a href="http://ftp.gnu.org/pub/gnu/make/">ftp.gnu.org/pub/gnu/make/</a>.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1122
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1123
<p><a name="buildgmake"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1124
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1125
<h3>Building GNU make</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1126
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1127
<p>First step is to get the GNU make 3.81 or newer source from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1128
<a href="http://ftp.gnu.org/pub/gnu/make/">ftp.gnu.org/pub/gnu/make/</a>. Building is a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1129
little different depending on the OS but is basically done with:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1130
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1131
<pre><code>  bash ./configure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1132
  make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1133
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1134
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1135
<hr />
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1136
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1137
<p><a name="buildenvironments"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1138
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1139
<h2>Appendix C: Build Environments</h2>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1140
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1141
<h3>Minimum Build Environments</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1142
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1143
<p>This file often describes specific requirements for what we call the "minimum
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1144
build environments" (MBE) for this specific release of the JDK. What is listed
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1145
below is what the Oracle Release Engineering Team will use to build the Oracle
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1146
JDK product. Building with the MBE will hopefully generate the most compatible
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1147
bits that install on, and run correctly on, the most variations of the same
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1148
base OS and hardware architecture. In some cases, these represent what is often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1149
called the least common denominator, but each Operating System has different
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1150
aspects to it.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1151
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1152
<p>In all cases, the Bootstrap JDK version minimum is critical, we cannot
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1153
guarantee builds will work with older Bootstrap JDK's. Also in all cases, more
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1154
RAM and more processors is better, the minimums listed below are simply
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1155
recommendations.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1156
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1157
<p>With Solaris and Mac OS X, the version listed below is the oldest release we
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1158
can guarantee builds and works, and the specific version of the compilers used
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1159
could be critical.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1160
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1161
<p>With Windows the critical aspect is the Visual Studio compiler used, which due
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1162
to it's runtime, generally dictates what Windows systems can do the builds and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1163
where the resulting bits can be used.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1164
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1165
<p><strong>NOTE: We expect a change here off these older Windows OS releases and to a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1166
'less older' one, probably Windows 2008R2 X64.</strong></p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1167
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1168
<p>With Linux, it was just a matter of picking a stable distribution that is a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1169
good representative for Linux in general.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1170
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1171
<p>It is understood that most developers will NOT be using these specific
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1172
versions, and in fact creating these specific versions may be difficult due to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1173
the age of some of this software. It is expected that developers are more often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1174
using the more recent releases and distributions of these operating systems.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1175
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1176
<p>Compilation problems with newer or different C/C++ compilers is a common
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1177
problem. Similarly, compilation problems related to changes to the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1178
<code>/usr/include</code> or system header files is also a common problem with older,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1179
newer, or unreleased OS versions. Please report these types of problems as bugs
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1180
so that they can be dealt with accordingly.</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1181
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1182
<blockquote>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1183
  <p><table border="1">
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1184
     <thead>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1185
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1186
         <th>Base OS and Architecture</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1187
         <th>OS</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1188
         <th>C/C++ Compiler</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1189
         <th>Bootstrap JDK</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1190
         <th>Processors</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1191
         <th>RAM Minimum</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1192
         <th>DISK Needs</th>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1193
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1194
     </thead>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1195
     <tbody>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1196
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1197
         <td>Linux X86 (32-bit) and X64 (64-bit)</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1198
         <td>Oracle Enterprise Linux 6.4</td>
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1199
         <td>gcc 4.9.2 </td>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1200
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1201
         <td>2 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1202
         <td>1 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1203
         <td>6 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1204
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1205
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1206
         <td>Solaris SPARCV9 (64-bit)</td>
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1207
         <td>Solaris 11 Update 1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1208
         <td>Studio 12 Update 4 + patches</td>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1209
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1210
         <td>4 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1211
         <td>4 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1212
         <td>8 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1213
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1214
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1215
         <td>Solaris X64 (64-bit)</td>
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1216
         <td>Solaris 11 Update 1</td>
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1217
         <td>Studio 12 Update 4 + patches</td>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1218
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1219
         <td>4 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1220
         <td>4 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1221
         <td>8 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1222
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1223
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1224
         <td>Windows X86 (32-bit)</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1225
         <td>Windows Server 2012 R2 x64</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1226
         <td>Microsoft Visual Studio C++ 2013 Professional Edition</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1227
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1228
         <td>2 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1229
         <td>2 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1230
         <td>6 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1231
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1232
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1233
         <td>Windows X64 (64-bit)</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1234
         <td>Windows Server 2012 R2 x64</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1235
         <td>Microsoft Visual Studio C++ 2013 Professional Edition</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1236
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1237
         <td>2 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1238
         <td>2 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1239
         <td>6 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1240
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1241
       <tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1242
         <td>Mac OS X X64 (64-bit)</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1243
         <td>Mac OS X 10.9 "Mavericks"</td>
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
  1244
         <td>Xcode 6.3 or newer</td>
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1245
         <td>JDK 8</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1246
         <td>2 or more</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1247
         <td>4 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1248
         <td>6 GB</td>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1249
       </tr>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1250
     </tbody>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1251
   </table></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1252
</blockquote>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1253
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1254
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1255
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1256
<p><a name="SDBE"></a></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1257
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1258
<h3>Specific Developer Build Environments</h3>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1259
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1260
<p>We won't be listing all the possible environments, but we will try to provide
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1261
what information we have available to us.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1262
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1263
<p><strong>NOTE: The community can help out by updating this part of the document.</strong></p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1264
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1265
<h4>Fedora</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1266
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1267
<p>After installing the latest <a href="http://fedoraproject.org">Fedora</a> you need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1268
install several build dependencies. The simplest way to do it is to execute the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1269
following commands as user <code>root</code>:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1270
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1271
<pre><code>  yum-builddep java-1.7.0-openjdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1272
  yum install gcc gcc-c++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1273
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1274
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1275
<p>In addition, it's necessary to set a few environment variables for the build:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1276
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1277
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1278
  export PATH="/usr/lib/jvm/java-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1279
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1280
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1281
<h4>CentOS 5.5</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1282
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1283
<p>After installing <a href="http://www.centos.org/">CentOS 5.5</a> you need to make sure you
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1284
have the following Development bundles installed:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1285
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1286
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1287
<li>Development Libraries</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1288
<li>Development Tools</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1289
<li>Java Development</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1290
<li>X Software Development (Including XFree86-devel)</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1291
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1292
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1293
<p>Plus the following packages:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1294
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1295
<ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1296
<li>cups devel: Cups Development Package</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1297
<li>alsa devel: Alsa Development Package</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1298
<li>Xi devel: libXi.so Development Package</li>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1299
</ul>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1300
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1301
<p>The freetype 2.3 packages don't seem to be available, but the freetype 2.3
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1302
sources can be downloaded, built, and installed easily enough from <a href="http://downloads.sourceforge.net/freetype">the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1303
freetype site</a>. Build and install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1304
with something like:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1305
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1306
<pre><code>  bash ./configure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1307
  make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1308
  sudo -u root make install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1309
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1310
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1311
<p>Mercurial packages could not be found easily, but a Google search should find
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1312
ones, and they usually include Python if it's needed.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1313
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1314
<h4>Debian 5.0 (Lenny)</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1315
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1316
<p>After installing <a href="http://debian.org">Debian</a> 5 you need to install several
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1317
build dependencies. The simplest way to install the build dependencies is to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1318
execute the following commands as user <code>root</code>:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1319
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1320
<pre><code>  aptitude build-dep openjdk-7
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1321
  aptitude install openjdk-7-jdk libmotif-dev
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1322
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1323
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1324
<p>In addition, it's necessary to set a few environment variables for the build:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1325
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1326
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1327
  export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1328
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1329
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1330
<h4>Ubuntu 12.04</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1331
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1332
<p>After installing <a href="http://ubuntu.org">Ubuntu</a> 12.04 you need to install several
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1333
build dependencies. The simplest way to do it is to execute the following
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1334
commands:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1335
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1336
<pre><code>  sudo aptitude build-dep openjdk-7
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1337
  sudo aptitude install openjdk-7-jdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1338
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1339
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1340
<p>In addition, it's necessary to set a few environment variables for the build:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1341
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1342
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1343
  export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1344
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1345
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1346
<h4>OpenSUSE 11.1</h4>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1347
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1348
<p>After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 you need to install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1349
several build dependencies. The simplest way to install the build dependencies
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1350
is to execute the following commands:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1351
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1352
<pre><code>  sudo zypper source-install -d java-1_7_0-openjdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1353
  sudo zypper install make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1354
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1355
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1356
<p>In addition, it is necessary to set a few environment variables for the build:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1357
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1358
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1359
  export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:$[PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1360
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1361
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1362
<p>Finally, you need to unset the <code>JAVA_HOME</code> environment variable:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1363
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1364
<pre><code>  export -n JAVA_HOME`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1365
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1366
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1367
<h4>Mandriva Linux One 2009 Spring</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1368
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1369
<p>After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring you need
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1370
to install several build dependencies. The simplest way to install the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1371
dependencies is to execute the following commands as user <code>root</code>:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1372
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1373
<pre><code>  urpmi java-1.7.0-openjdk-devel make gcc gcc-c++ freetype-devel zip unzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1374
    libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1375
    libxtst6-devel libxi-devel
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1376
</code></pre>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1377
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1378
<p>In addition, it is necessary to set a few environment variables for the build:</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1379
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1380
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1381
  export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1382
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1383
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1384
<h4>OpenSolaris 2009.06</h4>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1385
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1386
<p>After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 you need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1387
install several build dependencies. The simplest way to install the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1388
dependencies is to execute the following commands:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1389
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1390
<pre><code>  pfexec pkg install SUNWgmake SUNWj7dev sunstudioexpress SUNWcups SUNWzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1391
    SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1392
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1393
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1394
<p>In addition, it is necessary to set a few environment variables for the build:</p>
15787
496cd89abcc5 8004712: build-infra: Move user guide from web pages to repository
ohair
parents: 14069
diff changeset
  1395
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1396
<pre><code>  export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1397
  export PATH="/opt/SunStudioExpress/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1398
</code></pre>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1399
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1400
<hr />
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1401
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1402
<p>End of the OpenJDK build README document.</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1403
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1404
<p>Please come again!</p>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents: 29865
diff changeset
  1405
  </body>
333
d4540117530e 6563616: Clarify instructions for unpacking openjdk binary "plug"
ohair
parents: 15
diff changeset
  1406
</html>