Cross-compilation doc
[oota-llvm.git] / docs / index.rst
1 Overview
2 ========
3
4 .. warning::
5
6    If you are using a released version of LLVM, see `the download page
7    <http://llvm.org/releases/>`_ to find your documentation.
8
9 The LLVM compiler infrastructure supports a wide range of projects, from
10 industrial strength compilers to specialized JIT applications to small
11 research projects.
12
13 Similarly, documentation is broken down into several high-level groupings
14 targeted at different audiences:
15
16 LLVM Design & Overview
17 ======================
18
19 Several introductory papers and presentations.
20
21 .. toctree::
22    :hidden:
23
24    LangRef
25
26 :doc:`LangRef`
27   Defines the LLVM intermediate representation.
28
29 `Introduction to the LLVM Compiler`__
30   Presentation providing a users introduction to LLVM.
31
32   .. __: http://llvm.org/pubs/2008-10-04-ACAT-LLVM-Intro.html
33
34 `Intro to LLVM`__
35   Book chapter providing a compiler hacker's introduction to LLVM.
36
37   .. __: http://www.aosabook.org/en/llvm.html
38
39
40 `LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation`__
41   Design overview.
42
43   .. __: http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
44
45 `LLVM: An Infrastructure for Multi-Stage Optimization`__
46   More details (quite old now).
47
48   .. __: http://llvm.org/pubs/2002-12-LattnerMSThesis.html
49
50 `Publications mentioning LLVM <http://llvm.org/pubs>`_
51    ..
52
53 User Guides
54 ===========
55
56 For those new to the LLVM system.
57
58 NOTE: If you are a user who is only interested in using LLVM-based
59 compilers, you should look into `Clang <http://clang.llvm.org>`_ or
60 `DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
61 intended for users who have a need to work with the intermediate LLVM
62 representation.
63
64 .. toctree::
65    :hidden:
66
67    CMake
68    HowToBuildOnARM
69    HowToCrossCompileLLVM
70    CommandGuide/index
71    GettingStarted
72    GettingStartedVS
73    FAQ
74    Lexicon
75    HowToAddABuilder
76    yaml2obj
77    HowToSubmitABug
78    SphinxQuickstartTemplate
79    Phabricator
80    TestingGuide
81    tutorial/index
82    ReleaseNotes
83    Passes
84    YamlIO
85    GetElementPtr
86
87 :doc:`GettingStarted`
88    Discusses how to get up and running quickly with the LLVM infrastructure.
89    Everything from unpacking and compilation of the distribution to execution
90    of some tools.
91
92 :doc:`CMake`
93    An addendum to the main Getting Started guide for those using the `CMake
94    build system <http://www.cmake.org>`_.
95
96 :doc:`HowToBuildOnARM`
97    Notes on building and testing LLVM/Clang on ARM.
98
99 :doc:`HowToCrossCompileLLVM`
100    Notes on cross-building and testing LLVM/Clang.
101
102 :doc:`GettingStartedVS`
103    An addendum to the main Getting Started guide for those using Visual Studio
104    on Windows.
105
106 :doc:`tutorial/index`
107    Tutorials about using LLVM. Includes a tutorial about making a custom
108    language with LLVM.
109
110 :doc:`LLVM Command Guide <CommandGuide/index>`
111    A reference manual for the LLVM command line utilities ("man" pages for LLVM
112    tools).
113
114 :doc:`Passes`
115    A list of optimizations and analyses implemented in LLVM.
116
117 :doc:`FAQ`
118    A list of common questions and problems and their solutions.
119
120 :doc:`Release notes for the current release <ReleaseNotes>`
121    This describes new features, known bugs, and other limitations.
122
123 :doc:`HowToSubmitABug`
124    Instructions for properly submitting information about any bugs you run into
125    in the LLVM system.
126
127 :doc:`SphinxQuickstartTemplate`
128   A template + tutorial for writing new Sphinx documentation. It is meant
129   to be read in source form.
130
131 :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
132    A reference manual for using the LLVM testing infrastructure.
133
134 `How to build the C, C++, ObjC, and ObjC++ front end`__
135    Instructions for building the clang front-end from source.
136
137    .. __: http://clang.llvm.org/get_started.html
138
139 :doc:`Lexicon`
140    Definition of acronyms, terms and concepts used in LLVM.
141
142 :doc:`HowToAddABuilder`
143    Instructions for adding new builder to LLVM buildbot master.
144
145 :doc:`YamlIO`
146    A reference guide for using LLVM's YAML I/O library.
147
148 :doc:`GetElementPtr`
149   Answers to some very frequent questions about LLVM's most frequently
150   misunderstood instruction.
151
152 Programming Documentation
153 =========================
154
155 For developers of applications which use LLVM as a library.
156
157 .. toctree::
158    :hidden:
159
160    Atomics
161    CodingStandards
162    CommandLine
163    CompilerWriterInfo
164    ExtendingLLVM
165    HowToSetUpLLVMStyleRTTI
166    ProgrammersManual
167    Extensions
168
169 :doc:`LLVM Language Reference Manual <LangRef>`
170   Defines the LLVM intermediate representation and the assembly form of the
171   different nodes.
172
173 :doc:`Atomics`
174   Information about LLVM's concurrency model.
175
176 :doc:`ProgrammersManual`
177   Introduction to the general layout of the LLVM sourcebase, important classes
178   and APIs, and some tips & tricks.
179
180 :doc:`Extensions`
181   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
182
183 :doc:`CommandLine`
184   Provides information on using the command line parsing library.
185
186 :doc:`CodingStandards`
187   Details the LLVM coding standards and provides useful information on writing
188   efficient C++ code.
189
190 :doc:`HowToSetUpLLVMStyleRTTI`
191   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
192   class hierarchy.
193
194 :doc:`ExtendingLLVM`
195   Look here to see how to add instructions and intrinsics to LLVM.
196
197 `Doxygen generated documentation <http://llvm.org/doxygen/>`_
198   (`classes <http://llvm.org/doxygen/inherits.html>`_)
199   (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
200
201 `ViewVC Repository Browser <http://llvm.org/viewvc/>`_
202    ..
203
204 :doc:`CompilerWriterInfo`
205   A list of helpful links for compiler writers.
206
207 Subsystem Documentation
208 =======================
209
210 For API clients and LLVM developers.
211
212 .. toctree::
213    :hidden:
214
215    AliasAnalysis
216    BitCodeFormat
217    BranchWeightMetadata
218    Bugpoint
219    CodeGenerator
220    ExceptionHandling
221    LinkTimeOptimization
222    SegmentedStacks
223    TableGenFundamentals
224    DebuggingJITedCode
225    GoldPlugin
226    MarkedUpDisassembly
227    SystemLibrary
228    SourceLevelDebugging
229    Vectorizers
230    WritingAnLLVMBackend
231    GarbageCollection
232    WritingAnLLVMPass
233    TableGen/LangRef
234    HowToUseAttributes
235    NVPTXUsage
236
237 :doc:`WritingAnLLVMPass`
238    Information on how to write LLVM transformations and analyses.
239
240 :doc:`WritingAnLLVMBackend`
241    Information on how to write LLVM backends for machine targets.
242
243 :doc:`CodeGenerator`
244    The design and implementation of the LLVM code generator.  Useful if you are
245    working on retargetting LLVM to a new architecture, designing a new codegen
246    pass, or enhancing existing components.
247
248 :doc:`TableGenFundamentals`
249    Describes the TableGen tool, which is used heavily by the LLVM code
250    generator.
251
252 :doc:`AliasAnalysis`
253    Information on how to write a new alias analysis implementation or how to
254    use existing analyses.
255
256 :doc:`GarbageCollection`
257    The interfaces source-language compilers should use for compiling GC'd
258    programs.
259
260 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
261    This document describes the design and philosophy behind the LLVM
262    source-level debugger.
263
264 :doc:`Vectorizers`
265    This document describes the current status of vectorization in LLVM.
266
267 :doc:`ExceptionHandling`
268    This document describes the design and implementation of exception handling
269    in LLVM.
270
271 :doc:`Bugpoint`
272    Automatic bug finder and test-case reducer description and usage
273    information.
274
275 :doc:`BitCodeFormat`
276    This describes the file format and encoding used for LLVM "bc" files.
277
278 :doc:`System Library <SystemLibrary>`
279    This document describes the LLVM System Library (``lib/System``) and
280    how to keep LLVM source code portable
281
282 :doc:`LinkTimeOptimization`
283    This document describes the interface between LLVM intermodular optimizer
284    and the linker and its design
285
286 :doc:`GoldPlugin`
287    How to build your programs with link-time optimization on Linux.
288
289 :doc:`DebuggingJITedCode`
290    How to debug JITed code with GDB.
291
292 :doc:`MCJITDesignAndImplementation`
293    Describes the inner workings of MCJIT execution engine.
294
295 :doc:`BranchWeightMetadata`
296    Provides information about Branch Prediction Information.
297
298 :doc:`SegmentedStacks`
299    This document describes segmented stacks and how they are used in LLVM.
300
301 :doc:`MarkedUpDisassembly`
302    This document describes the optional rich disassembly output syntax.
303
304 :doc:`HowToUseAttributes`
305   Answers some questions about the new Attributes infrastructure.
306
307 :doc:`NVPTXUsage`
308    This document describes using the NVPTX back-end to compile GPU kernels.
309
310
311 Development Process Documentation
312 =================================
313
314 Information about LLVM's development process.
315
316 .. toctree::
317    :hidden:
318
319    DeveloperPolicy
320    MakefileGuide
321    Projects
322    LLVMBuild
323    HowToReleaseLLVM
324    Packaging
325
326 :doc:`DeveloperPolicy`
327    The LLVM project's policy towards developers and their contributions.
328
329 :doc:`Projects`
330   How-to guide and templates for new projects that *use* the LLVM
331   infrastructure.  The templates (directory organization, Makefiles, and test
332   tree) allow the project code to be located outside (or inside) the ``llvm/``
333   tree, while using LLVM header files and libraries.
334
335 :doc:`LLVMBuild`
336   Describes the LLVMBuild organization and files used by LLVM to specify
337   component descriptions.
338
339 :doc:`MakefileGuide`
340   Describes how the LLVM makefiles work and how to use them.
341
342 :doc:`HowToReleaseLLVM`
343   This is a guide to preparing LLVM releases. Most developers can ignore it.
344
345 :doc:`ReleaseProcess`
346   This is a validate a new release, during the release process. Most developers can ignore it.
347
348 :doc:`Packaging`
349    Advice on packaging LLVM into a distribution.
350
351 Community
352 =========
353
354 LLVM has a thriving community of friendly and helpful developers.
355 The two primary communication mechanisms in the LLVM community are mailing
356 lists and IRC.
357
358 Mailing Lists
359 -------------
360
361 If you can't find what you need in these docs, try consulting the mailing
362 lists.
363
364 `Developer's List (llvmdev)`__
365   This list is for people who want to be included in technical discussions of
366   LLVM. People post to this list when they have questions about writing code
367   for or using the LLVM tools. It is relatively low volume.
368
369   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
370
371 `Commits Archive (llvm-commits)`__
372   This list contains all commit messages that are made when LLVM developers
373   commit code changes to the repository. It also serves as a forum for
374   patch review (i.e. send patches here). It is useful for those who want to
375   stay on the bleeding edge of LLVM development. This list is very high
376   volume.
377
378   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-commits/
379
380 `Bugs & Patches Archive (llvmbugs)`__
381   This list gets emailed every time a bug is opened and closed. It is
382   higher volume than the LLVMdev list.
383
384   .. __: http://lists.cs.uiuc.edu/pipermail/llvmbugs/
385
386 `Test Results Archive (llvm-testresults)`__
387   A message is automatically sent to this list by every active nightly tester
388   when it completes.  As such, this list gets email several times each day,
389   making it a high volume list.
390
391   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-testresults/
392
393 `LLVM Announcements List (llvm-announce)`__
394   This is a low volume list that provides important announcements regarding
395   LLVM.  It gets email about once a month.
396
397   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvm-announce
398
399 IRC
400 ---
401
402 Users and developers of the LLVM project (including subprojects such as Clang)
403 can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
404
405 This channel has several bots.
406
407 * Buildbot reporters
408
409   * llvmbb - Bot for the main LLVM buildbot master.
410     http://lab.llvm.org:8011/console
411   * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
412   * smooshlab - Apple's internal buildbot master.
413
414 * robot - Bugzilla linker. %bug <number>
415
416 * clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
417   near-trunk clang instead of gcc.
418
419
420 Indices and tables
421 ==================
422
423 * :ref:`genindex`
424 * :ref:`search`