chromium/native_client_sdk/src/doc/README

nacl-docs-rst
=============

Directory structure
-------------------

This is a tree of .rst files that represent the source of the NaCl
documentation. Some of the files and directories here are special:

* conf.py: Sphinx configuration file
* images/: Images are stored here. Note that this isn't necessary - Sphinx
  doesn't mind about interspersing images in .rst directories.
* _sphinxext/: Code of the Sphinx extension we use to generate HTML from .rst
* _static/: Static files, like CSS, for the documentation. This should be seen
  as part of the infrastructure - the real CSS comes from the real doc
  publishing server.
* doxygen/: Contains scripts for building doxygen docs.
* Makefile & README

All output is written to native_client_sdk/doc_generated/...

How to build
------------

To build the docs you will need these debian/ubuntu packages:

* python-sphinx
* python-beautifulsoup

Note: Sphinx version 1.3.3 is required due to dependency on
SmartyPantsHTMLTranslator, which is unavailable in recent versions of Sphinx.

There are two primary make targets: ``chromesite`` and ``chromesite_rst``. The
``chromesite`` target will build all documentation, including the doxygen docs.
This usually takes about a minute. To build this config, run::

  make

The ``chromesite_rst`` target will only build the ReST docs. This is usually
much faster. The default target is ``chromesite``. To build this config, run::

  make chromesite_rst

Local HTTP server to view the docs
----------------------------------

To view the HTML locally, build the docs with production mode turned off, and
run::

  make serve

This will start a webserver on the local machine, and allows the pages
to be viewed by in a browser by navigating to::

  http://localhost:8000/native-client

Serving through a server and not just file:/// because this way the <link>
relative paths to CSS actually work.

Checking outgoing links for integrity
-------------------------------------

We use the Sphinx-provided link checker (configured in conf.py and with some
monkey-patching in the extension) to check the outgoing links from the
documentation. To run the link checker::

  make linkcheck

And look for "broken" in the output file.