Overhauled llvm/clang docs builds. Closes PR6613.

NOTE: 2nd part changeset for cfe trunk to follow.

*** PRE-PATCH ISSUES ADDRESSED

- clang api docs fail build from objdir
- clang/llvm api docs collide in install PREFIX/
- clang/llvm main docs collide in install
- clang/llvm main docs have full of hard coded destination
  assumptions and make use of absolute root in static html files;
  namely CommandGuide tools hard codes a website destination
  for cross references and some html cross references assume
  website root paths

*** IMPROVEMENTS

- bumped Doxygen from 1.4.x -> 1.6.3
- splits llvm/clang docs into 'main' and 'api' (doxygen) build trees
- provide consistent, reliable doc builds for both main+api docs
- support buid vs. install vs. website intentions
- support objdir builds
- document targets with 'make help'
- correct clean and uninstall operations
- use recursive dir delete only where absolutely necessary
- added call function fn.RMRF which safeguards against botched 'rm -rf';
  if any target (or any variable is evaluated) which attempts
  to remove any dirs which match a hard-coded 'safelist', a verbose
  error will be printed and make will error-stop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103213 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
mike-m
2010-05-06 23:45:43 +00:00
parent c26ae5ab7e
commit 68cb31901c
139 changed files with 2132 additions and 1360 deletions
-118
View File
@@ -1,118 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Advice on Packaging LLVM</title>
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>
<div class="doc_title">Advice on Packaging LLVM</div>
<ol>
<li><a href="#overview">Overview</a></li>
<li><a href="#compilation">Compile Flags</a></li>
<li><a href="#cxx-features">C++ Features</a></li>
<li><a href="#shared-library">Shared Library</a></li>
<li><a href="#deps">Dependencies</a></li>
</ol>
<!--=========================================================================-->
<div class="doc_section"><a name="overview">Overview</a></div>
<!--=========================================================================-->
<div class="doc_text">
<p>LLVM sets certain default configure options to make sure our developers don't
break things for constrained platforms. These settings are not optimal for most
desktop systems, and we hope that packagers (e.g., Redhat, Debian, MacPorts,
etc.) will tweak them. This document lists settings we suggest you tweak.
</p>
<p>LLVM's API changes with each release, so users are likely to want, for
example, both LLVM-2.6 and LLVM-2.7 installed at the same time to support apps
developed against each.
</p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="compilation">Compile Flags</a></div>
<!--=========================================================================-->
<div class="doc_text">
<p>LLVM runs much more quickly when it's optimized and assertions are removed.
However, such a build is currently incompatible with users who build without
defining NDEBUG, and the lack of assertions makes it hard to debug problems in
user code. We recommend allowing users to install both optimized and debug
versions of LLVM in parallel. The following configure flags are relevant:
</p>
<dl>
<dt><tt>--disable-assertions</tt></dt><dd>Builds LLVM with <tt>NDEBUG</tt>
defined. Changes the LLVM ABI. Also available by setting
<tt>DISABLE_ASSERTIONS=0|1</tt> in <tt>make</tt>'s environment. This defaults
to enabled regardless of the optimization setting, but it slows things
down.</dd>
<dt><tt>--enable-debug-symbols</tt></dt><dd>Builds LLVM with <tt>-g</tt>.
Also available by setting <tt>DEBUG_SYMBOLS=0|1</tt> in <tt>make</tt>'s
environment. This defaults to disabled when optimizing, so you should turn it
back on to let users debug their programs.</dd>
<dt><tt>--enable-optimized</tt></dt><dd>(For svn checkouts) Builds LLVM with
<tt>-O2</tt> and, by default, turns off debug symbols. Also available by
setting <tt>ENABLE_OPTIMIZED=0|1</tt> in <tt>make</tt>'s environment. This
defaults to enabled when not in a checkout.</dd>
</dl>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="cxx-features">C++ Features</a></div>
<!--=========================================================================-->
<div class="doc_text">
<dl>
<dt>RTTI</dt><dd>LLVM disables RTTI by default. Add <tt>REQUIRES_RTTI=1</tt>
to your environment while running <tt>make</tt> to re-enable it. This will
allow users to build with RTTI enabled and still inherit from LLVM
classes.</dd>
</dl>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="shared-library">Shared Library</a></div>
<!--=========================================================================-->
<div class="doc_text">
<p>Configure with <tt>--enable-shared</tt> to build
<tt>libLLVM-<var>major</var>.<var>minor</var>.(so|dylib)</tt> and link the tools
against it. This saves lots of binary size at the cost of some startup time.
</p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="deps">Dependencies</a></div>
<!--=========================================================================-->
<div class="doc_text">
<dl>
<dt><tt>--enable-libffi</tt></dt><dd>Depend on <a
href="http://sources.redhat.com/libffi/">libffi</a> to allow the LLVM
interpreter to call external functions.</dd>
<dt><tt>--with-oprofile</tt></dt><dd>Depend on <a
href="http://oprofile.sourceforge.net/doc/devel/index.html">libopagent</a>
(>=version 0.9.4) to let the LLVM JIT tell oprofile about function addresses and
line numbers.</dd>
</dl>
</div>
<!-- *********************************************************************** -->
<hr>
<address>
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
<a href="http://validator.w3.org/check/referer"><img
src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
<a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
Last modified: $Date$
</address>
</body>
</html>