<div class="doc_text">
<p>LLVM is released on a time based schedule (currently every 6 months). We
do not have dot releases because of the nature of LLVM incremental
- developement philosophy. The release schedule is roughly as follows:
+ development philosophy. The release schedule is roughly as follows:
</p>
<ol>
<li>Set code freeze and branch creation date for 6 months after last code freeze
tar -czvf - llvm-X.X | gzip > llvm-X.X.tar.gz
tar -czvf - llvm-test-X.X | gzip > llvm-test-X.X.tar.gz
tar -czvf - llvm-gcc4.2-X.X.source | gzip > llvm-gcc-4.2-X.X.source.tar.gz
-tar -czvf - clang-X.X.source | gzip > clang-X.X.source.tar.gz
+tar -czvf - clang-X.X | gzip > clang-X.X.tar.gz
</pre>
</div>
</div>
<div class="doc_text">
The build of <tt>llvm</tt>, <tt>llvm-gcc</tt>, and <tt>clang</tt> must be free
-of errors and warnings in both debug and release modes. If both debug and
-release builds are clean, then the release passes build qualification.
+of errors and warnings in both debug, release+asserts, and release builds.
+If all builds are clean, then the release passes build qualification.
+
+<ol>
+<li>debug: ENABLE_OPTIMIZED=0</li>
+<li>release+asserts: ENABLE_OPTIMIZED=1</li>
+<li>release: ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</li>
+</ol>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="build">Build LLVM</a></div>
<div class="doc_text">
<p>
- Build both debug and release (optimized) versions of LLVM on all supported
- platforms. Direction to build llvm are
+ Build both debug, release+asserts (optimized), and release versions of
+ LLVM on all supported platforms. Direction to build llvm are
<a href="http://llvm.org/docs/GettingStarted.html#quickstart">here</a>.
</p>
</div>
<li>
Build the LLVM GCC front-end by following the directions in the README.LLVM
file. The frontend must be compiled with c, c++, objc (mac only),
- objc++ (mac only) and fortran support.
- Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
+ objc++ (mac only) and fortran support. </li>
+ <li>Please boostrap as well.</li>
+ <li>Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
minor release numbers.
</li>
Binary Distribution</a></div>
<div class="doc_text">
<p>
- Creating the Clang binary distribution (release/optimized) requires
+ Creating the Clang binary distribution (debug/release/release) requires
performing the following steps for each supported platform:
</p>
<tr><th>Architecture</th><th>OS</th><th>compiler</th></tr>
<tr><td>x86-32</td><td>Mac OS 10.5</td><td>gcc 4.0.1</td></tr>
<tr><td>x86-32</td><td>Linux</td><td>gcc 4.2.X, gcc 4.3.X</td></tr>
- <tr><td>x86-32</td><td>FreeBSD</td><td>gcc ?</td></tr>
- <tr><td>x86-32</td><td>mingw</td><td>gcc ?</td></tr>
+ <tr><td>x86-32</td><td>FreeBSD</td><td>gcc 4.2.X</td></tr>
+ <tr><td>x86-32</td><td>mingw</td><td>gcc 3.4.5</td></tr>
<tr><td>x86-64</td><td>Mac OS 10.5</td><td>gcc 4.0.1</td></tr>
<tr><td>x86-64</td><td>Linux</td><td>gcc 4.2.X, gcc 4.3.X</td></tr>
- <tr><td>x86-64</td><td>FreeBSD</td><td>gcc?</td></tr>
+ <tr><td>x86-64</td><td>FreeBSD</td><td>gcc 4.2.X</td></tr>
</table>
</p>
A release is qualified when it has no regressions from the previous
release (or baseline). Regressions are related to correctness only and not
performance at this time. <b>Regressions are new failures in the set of tests that
- are used to qualify each product and do not include anything not in the list.</b>
+ are used to qualify each product and only include things on the list.
+ Ultimately, there is no end to the number of possible bugs in a release. We
+ need a very concrete and definitive release criteria that ensures we have
+ monotonically improving quality on some metric. The metric we use is
+ described below. This doesn't mean that we don't care about other things,
+ but this are things that must be satisfied before a release can go out</b>
</div>
<p><table>
<tr><th>Architecture</th><th>OS</th><th>llvm-gcc baseline</th><th>clang baseline
</th><th>tests</th></tr>
- <tr><td>x86-32</td><td>Mac OS 10.5</td><td>last release</td><td>none</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
- <tr><td>x86-32</td><td>Linux</td><td>last release</td><td>none</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
- <tr><td>x86-32</td><td>FreeBSD</td><td>none</td><td>none</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
+ <tr><td>x86-32</td><td>Linux</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+ <tr><td>x86-32</td><td>FreeBSD</td><td>none</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
<tr><td>x86-32</td><td>mingw</td><td>last release</td><td>none</td><td>QT</td></tr>
- <tr><td>x86-64</td><td>Mac OS 10.5</td><td>last release</td><td>none</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
- <tr><td>x86-64</td><td>Linux</td><td>last release</td><td>none</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
- <tr><td>x86-64</td><td>FreeBSD</td><td>none</td><td>none</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
+ <tr><td>x86-64</td><td>Mac OS 10.X</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+ <tr><td>x86-64</td><td>Linux</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+ <tr><td>x86-64</td><td>FreeBSD</td><td>none</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
</table></p>
</div>
</a></div>
<div class="doc_text">
<p>
- The final stages of the release process involving taging the release branch,
+ The final stages of the release process involving tagging the release branch,
updating documentation that refers to the release, and updating the demo
page.</p>
<p>FIXME: Add a note if anything needs to be done to the clang website.
release documentation.</li>
<li> Finally, update the main page (<tt>index.html</tt> and sidebar) to
point to the new release and release announcement. Make sure this all gets
- commited back into Subversion.</li>
+ committed back into Subversion.</li>
</ol>
</div>