forked from OSchip/llvm-project
				
			[docs] Start a development guide, and write an introduction to Sphinx based
documentation. llvm-svn: 154228
This commit is contained in:
		
							parent
							
								
									6f71434a3b
								
							
						
					
					
						commit
						eaa88c8f71
					
				| 
						 | 
				
			
			@ -146,7 +146,7 @@ html_additional_pages = {'index': 'index.html'}
 | 
			
		|||
#html_split_index = False
 | 
			
		||||
 | 
			
		||||
# If true, links to the reST sources are added to the pages.
 | 
			
		||||
html_show_sourcelink = False
 | 
			
		||||
html_show_sourcelink = True
 | 
			
		||||
 | 
			
		||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
 | 
			
		||||
#html_show_sphinx = True
 | 
			
		||||
| 
						 | 
				
			
			@ -243,3 +243,9 @@ texinfo_documents = [
 | 
			
		|||
 | 
			
		||||
# FIXME: Define intersphinx configration.
 | 
			
		||||
intersphinx_mapping = {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# -- Options for extensions ----------------------------------------------------
 | 
			
		||||
 | 
			
		||||
# Enable this if you want TODOs to show up in the generated documentation.
 | 
			
		||||
#todo_include_todos = False
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,8 @@ Contents
 | 
			
		|||
 | 
			
		||||
   intro
 | 
			
		||||
   design
 | 
			
		||||
   development
 | 
			
		||||
   sphinx_intro
 | 
			
		||||
 | 
			
		||||
Indices and tables
 | 
			
		||||
==================
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
.. _development:
 | 
			
		||||
 | 
			
		||||
Development
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
lld is developed as part of the `LLVM <http://llvm.org>`_ project.
 | 
			
		||||
 | 
			
		||||
.. todo:: Write "getting started" style instructions for developers.
 | 
			
		||||
 | 
			
		||||
The project documentation is written in reStructuredText and generated using the
 | 
			
		||||
`Sphinx <http://sphinx.pocoo.org/>`_ documentation generator. For more
 | 
			
		||||
information on writing documentation for the project, see the
 | 
			
		||||
:ref:`sphinx_intro`.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,143 @@
 | 
			
		|||
.. _sphinx_intro:
 | 
			
		||||
 | 
			
		||||
Sphinx Introduction for LLVM Developers
 | 
			
		||||
=======================================
 | 
			
		||||
 | 
			
		||||
This document is intended as a short and simple introduction to the Sphinx
 | 
			
		||||
documentation generation system for LLVM developers.
 | 
			
		||||
 | 
			
		||||
Quickstart
 | 
			
		||||
----------
 | 
			
		||||
 | 
			
		||||
To get started writing documentation, you will need to:
 | 
			
		||||
 | 
			
		||||
 1. Have the Sphinx tools :ref:`installed <installing_sphinx>`.
 | 
			
		||||
 | 
			
		||||
 2. Understand how to :ref:`build the documentation
 | 
			
		||||
    <building_the_documentation>`.
 | 
			
		||||
 | 
			
		||||
 3. Start :ref:`writing documentation <writing_documentation>`!
 | 
			
		||||
 | 
			
		||||
.. _installing_sphinx:
 | 
			
		||||
 | 
			
		||||
Installing Sphinx
 | 
			
		||||
~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
You should be able to install Sphinx using the standard Python package
 | 
			
		||||
installation tool ``easy_install``, as follows::
 | 
			
		||||
 | 
			
		||||
  $ sudo easy_install sphinx
 | 
			
		||||
  Searching for sphinx
 | 
			
		||||
  Reading http://pypi.python.org/simple/sphinx/
 | 
			
		||||
  Reading http://sphinx.pocoo.org/
 | 
			
		||||
  Best match: Sphinx 1.1.3
 | 
			
		||||
  ... more lines here ..
 | 
			
		||||
 | 
			
		||||
If you do not have root access (or otherwise want to avoid installing Sphinx in
 | 
			
		||||
system directories) see the section on :ref:`installing_sphinx_in_a_venv` .
 | 
			
		||||
 | 
			
		||||
If you do not have the ``easy_install`` tool on your system, you should be able
 | 
			
		||||
to install it using:
 | 
			
		||||
 | 
			
		||||
  Linux
 | 
			
		||||
    Use your distributions standard package managament tool to install it, i.e.,
 | 
			
		||||
    ``apt-get install easy_install`` or ``yum install easy_install``.
 | 
			
		||||
 | 
			
		||||
  Mac OS X
 | 
			
		||||
    All modern Mac OS X systems come with ``easy_install`` as part of the base
 | 
			
		||||
    system.
 | 
			
		||||
 | 
			
		||||
  Windows
 | 
			
		||||
    See the `setuptools <http://pypi.python.org/pypi/setuptools>`_ package web
 | 
			
		||||
    page for instructions.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. _building_the_documentation:
 | 
			
		||||
 | 
			
		||||
Building the documentation
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
In order to build the documentation, all you should need to do is change to the
 | 
			
		||||
``docs`` directory and invoke make as follows::
 | 
			
		||||
 | 
			
		||||
  $ cd path/to/project/docs
 | 
			
		||||
  $ make html
 | 
			
		||||
 | 
			
		||||
which will invoke ``sphinx-build`` with the appropriate options for the project,
 | 
			
		||||
and generate the HTML documentation in a ``_build`` subdirectory. You can browse
 | 
			
		||||
it starting from the index page by visiting ``_build/html/index.html``.
 | 
			
		||||
 | 
			
		||||
Sphinx supports a wide variety of generation formats (including LaTeX, man
 | 
			
		||||
pages, and plain text). The ``Makefile`` includes a number of convenience
 | 
			
		||||
targets for invoking ``sphinx-build`` appropriately, the common ones are:
 | 
			
		||||
 | 
			
		||||
  make html
 | 
			
		||||
    Generate the HTML output.
 | 
			
		||||
 | 
			
		||||
  latexpdf
 | 
			
		||||
    Generate LaTeX documentation and convert to a PDF.
 | 
			
		||||
 | 
			
		||||
  man
 | 
			
		||||
    Generate man pages.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. _writing_documentation:
 | 
			
		||||
 | 
			
		||||
Writing documentation
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
The documentation itself is written in the reStructuredText (ReST) format, and Sphinx
 | 
			
		||||
defines additional tags to support features like cross-referencing.
 | 
			
		||||
 | 
			
		||||
The ReST format itself is organized around documents mostly being readable
 | 
			
		||||
plaintext documents. You should generally be able to write new documentation
 | 
			
		||||
easily just by following the style of the existing documentation.
 | 
			
		||||
 | 
			
		||||
If you want to understand the formatting of the documents more, the best place
 | 
			
		||||
to start is Sphinx's own `ReST Primer <http://sphinx.pocoo.org/rest.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Learning More
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
If you want to learn more about the Sphinx system, the best place to start is
 | 
			
		||||
the Sphinx documentation itself, available `here
 | 
			
		||||
<http://sphinx.pocoo.org/contents.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. _installing_sphinx_in_a_venv:
 | 
			
		||||
 | 
			
		||||
Installing Sphinx in a Virtual Environment
 | 
			
		||||
------------------------------------------
 | 
			
		||||
 | 
			
		||||
Most Python developers prefer to work with tools inside a *virtualenv* (virtual
 | 
			
		||||
environment) instance, which functions as an application sandbox. This avoids
 | 
			
		||||
polluting your system installation with different packages used by various
 | 
			
		||||
projects (and ensures that dependencies for different packages don't conflict
 | 
			
		||||
with one another). Of course, you need to first have the virtualenv software
 | 
			
		||||
itself which generally would be installed at the system level::
 | 
			
		||||
 | 
			
		||||
  $ sudo easy_install virtualenv
 | 
			
		||||
 | 
			
		||||
but after that you no longer need to install additional packages in the system
 | 
			
		||||
directories.
 | 
			
		||||
 | 
			
		||||
Once you have the *virtualenv* tool itself installed, you can create a
 | 
			
		||||
virtualenv for Sphinx using::
 | 
			
		||||
 | 
			
		||||
  $ virtualenv ~/my-sphinx-install
 | 
			
		||||
  New python executable in /Users/dummy/my-sphinx-install/bin/python
 | 
			
		||||
  Installing setuptools............done.
 | 
			
		||||
  Installing pip...............done.
 | 
			
		||||
 | 
			
		||||
  $ ~/my-sphinx-install/bin/easy_install sphinx
 | 
			
		||||
  ... install messages here ...
 | 
			
		||||
 | 
			
		||||
and from now on you can "activate" the *virtualenv* using::
 | 
			
		||||
 | 
			
		||||
  $ source ~/my-sphinx-install/bin/activate
 | 
			
		||||
 | 
			
		||||
which will change your PATH to ensure the sphinx-build tool from inside the
 | 
			
		||||
virtual environment will be used. See the `virtualenv website
 | 
			
		||||
<http://www.virtualenv.org/en/latest/index.html>`_ for more information on using
 | 
			
		||||
virtual environments.
 | 
			
		||||
		Loading…
	
		Reference in New Issue