Daniel Dunbar | 75083eb | 2012-04-19 16:31:19 +0000 | [diff] [blame] | 1 | LLVM Documentation |
| 2 | ================== |
| 3 | |
Sean Silva | ccb8019 | 2013-01-02 02:31:51 +0000 | [diff] [blame] | 4 | LLVM's documentation is written in reStructuredText, a lightweight |
| 5 | plaintext markup language (file extension `.rst`). While the |
| 6 | reStructuredText documentation should be quite readable in source form, it |
Sean Silva | ba78f0b | 2013-02-27 18:48:42 +0000 | [diff] [blame] | 7 | is mostly meant to be processed by the Sphinx documentation generation |
| 8 | system to create HTML pages which are hosted on <http://llvm.org/docs/> and |
| 9 | updated after every commit. Manpage output is also supported, see below. |
Daniel Dunbar | 75083eb | 2012-04-19 16:31:19 +0000 | [diff] [blame] | 10 | |
Sean Silva | ccb8019 | 2013-01-02 02:31:51 +0000 | [diff] [blame] | 11 | If you instead would like to generate and view the HTML locally, install |
| 12 | Sphinx <http://sphinx-doc.org/> and then do: |
Daniel Dunbar | 75083eb | 2012-04-19 16:31:19 +0000 | [diff] [blame] | 13 | |
Philip Reames | 06f0086 | 2016-02-07 15:42:12 +0000 | [diff] [blame] | 14 | cd <build-dir> |
| 15 | cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_HTML=true <src-dir> |
| 16 | make -j3 docs-llvm-html |
| 17 | $BROWSER <build-dir>/docs//html/index.html |
Daniel Dunbar | 75083eb | 2012-04-19 16:31:19 +0000 | [diff] [blame] | 18 | |
Sean Silva | ccb8019 | 2013-01-02 02:31:51 +0000 | [diff] [blame] | 19 | The mapping between reStructuredText files and generated documentation is |
Philip Reames | 06f0086 | 2016-02-07 15:42:12 +0000 | [diff] [blame] | 20 | `docs/Foo.rst` <-> `<build-dir>/docs//html/Foo.html` <-> `http://llvm.org/docs/Foo.html`. |
Sean Silva | ccb8019 | 2013-01-02 02:31:51 +0000 | [diff] [blame] | 21 | |
| 22 | If you are interested in writing new documentation, you will want to read |
| 23 | `SphinxQuickstartTemplate.rst` which will get you writing documentation |
| 24 | very fast and includes examples of the most important reStructuredText |
| 25 | markup syntax. |
Sean Silva | ba78f0b | 2013-02-27 18:48:42 +0000 | [diff] [blame] | 26 | |
| 27 | Manpage Output |
| 28 | =============== |
| 29 | |
| 30 | Building the manpages is similar to building the HTML documentation. The |
| 31 | primary difference is to use the `man` makefile target, instead of the |
| 32 | default (which is `html`). Sphinx then produces the man pages in the |
Philip Reames | 06f0086 | 2016-02-07 15:42:12 +0000 | [diff] [blame] | 33 | directory `<build-dir>/docs/man/`. |
Sean Silva | ba78f0b | 2013-02-27 18:48:42 +0000 | [diff] [blame] | 34 | |
Philip Reames | 06f0086 | 2016-02-07 15:42:12 +0000 | [diff] [blame] | 35 | cd <build-dir> |
| 36 | cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_MAN=true <src-dir> |
| 37 | make -j3 docs-llvm-man |
| 38 | man -l >build-dir>/docs/man/FileCheck.1 |
Sean Silva | ba78f0b | 2013-02-27 18:48:42 +0000 | [diff] [blame] | 39 | |
| 40 | The correspondence between .rst files and man pages is |
Philip Reames | 06f0086 | 2016-02-07 15:42:12 +0000 | [diff] [blame] | 41 | `docs/CommandGuide/Foo.rst` <-> `<build-dir>/docs//man/Foo.1`. |
Sean Silva | ba78f0b | 2013-02-27 18:48:42 +0000 | [diff] [blame] | 42 | These .rst files are also included during HTML generation so they are also |
| 43 | viewable online (as noted above) at e.g. |
| 44 | `http://llvm.org/docs/CommandGuide/Foo.html`. |
Sean Silva | 4235754 | 2014-04-22 21:47:53 +0000 | [diff] [blame] | 45 | |
Tanya Lattner | 62a29da | 2017-06-24 20:13:32 +0000 | [diff] [blame] | 46 | Checking links |
Sean Silva | 4235754 | 2014-04-22 21:47:53 +0000 | [diff] [blame] | 47 | ============== |
| 48 | |
Steve King | dfc15d6 | 2015-08-12 23:56:50 +0000 | [diff] [blame] | 49 | The reachability of external links in the documentation can be checked by |
Sean Silva | 4235754 | 2014-04-22 21:47:53 +0000 | [diff] [blame] | 50 | running: |
| 51 | |
| 52 | cd docs/ |
| 53 | make -f Makefile.sphinx linkcheck |
Vassil Vassilev | 94e7e88 | 2017-04-27 17:23:53 +0000 | [diff] [blame] | 54 | |
| 55 | Doxygen page Output |
| 56 | ============== |
| 57 | |
| 58 | Install doxygen <http://www.stack.nl/~dimitri/doxygen/download.html> and dot2tex <https://dot2tex.readthedocs.io/en/latest>. |
| 59 | |
| 60 | cd <build-dir> |
| 61 | cmake -DLLVM_ENABLE_DOXYGEN=On <llvm-top-src-dir> |
| 62 | make doxygen-llvm # for LLVM docs |
| 63 | make doxygen-clang # for clang docs |
| 64 | |
| 65 | It will generate html in |
| 66 | |
| 67 | <build-dir>/docs/doxygen/html # for LLVM docs |
| 68 | <build-dir>/tools/clang/docs/doxygen/html # for clang docs |