123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- // -*- mode:doc; -*-
- // vim: syntax=asciidoc
- === Infrastructure for asciidoc documents
- [[asciidoc-documents-tutorial]]
- The Buildroot manual, which you are currently reading, is entirely written
- using the http://asciidoc.org/[AsciiDoc] mark-up syntax. The manual is then
- rendered to many formats:
- * html
- * split-html
- * pdf
- * epub
- * text
- Although Buildroot only contains one document written in AsciiDoc, there
- is, as for packages, an infrastructure for rendering documents using the
- AsciiDoc syntax.
- Also as for packages, the AsciiDoc infrastructure is available from a
- xref:outside-br-custom[br2-external tree]. This allows documentation for
- a br2-external tree to match the Buildroot documentation, as it will be
- rendered to the same formats and use the same layout and theme.
- ==== +asciidoc-document+ tutorial
- Whereas package infrastructures are suffixed with +-package+, the document
- infrastructures are suffixed with +-document+. So, the AsciiDoc infrastructure
- is named +asciidoc-document+.
- Here is an example to render a simple AsciiDoc document.
- ----
- 01: ################################################################################
- 02: #
- 03: # foo-document
- 04: #
- 05: ################################################################################
- 06:
- 07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))
- 08: $(eval $(call asciidoc-document))
- ----
- On line 7, the Makefile declares what the sources of the document are.
- Currently, it is expected that the document's sources are only local;
- Buildroot will not attempt to download anything to render a document.
- Thus, you must indicate where the sources are. Usually, the string
- above is sufficient for a document with no sub-directory structure.
- On line 8, we call the +asciidoc-document+ function, which generates all
- the Makefile code necessary to render the document.
- ==== +asciidoc-document+ reference
- The list of variables that can be set in a +.mk+ file to give metadata
- information is (assuming the document name is +foo+) :
- * +FOO_SOURCES+, mandatory, defines the source files for the document.
- * +FOO_RESOURCES+, optional, may contain a space-separated list of paths
- to one or more directories containing so-called resources (like CSS or
- images). By default, empty.
- * +FOO_DEPENDENCIES+, optional, the list of packages (most probably,
- host-packages) that must be built before building this document.
- If a hook of your document needs to access the _Kconfig_ structure,
- you may add +prepare-kconfig+ to the list of dependencies.
- There are also additional hooks (see xref:hooks[] for general information
- on hooks), that a document may set to define extra actions to be done at
- various steps:
- * +FOO_POST_RSYNC_HOOKS+ to run additional commands after the sources
- have been copied by Buildroot. This can for example be used to
- generate part of the manual with information extracted from the
- tree. As an example, Buildroot uses this hook to generate the tables
- in the appendices.
- * +FOO_CHECK_DEPENDENCIES_HOOKS+ to run additional tests on required
- components to generate the document. In AsciiDoc, it is possible to
- call filters, that is, programs that will parse an AsciiDoc block and
- render it appropriately (e.g. http://ditaa.sourceforge.net/[ditaa] or
- https://pythonhosted.org/aafigure/[aafigure]).
- * +FOO_CHECK_DEPENDENCIES_<FMT>_HOOKS+, to run additional tests for
- the specified format +<FMT>+ (see the list of rendered formats, above).
- Here is a complete example that uses all variables and all hooks:
- ----
- 01: ################################################################################
- 02: #
- 03: # foo-document
- 04: #
- 05: ################################################################################
- 06:
- 07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))
- 08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources))
- 09:
- 10: define FOO_GEN_EXTRA_DOC
- 11: /path/to/generate-script --outdir=$(@D)
- 12: endef
- 13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC
- 14:
- 15: define FOO_CHECK_MY_PROG
- 16: if ! which my-prog >/dev/null 2>&1; then \
- 17: echo "You need my-prog to generate the foo document"; \
- 18: exit 1; \
- 19: fi
- 20: endef
- 21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG
- 22:
- 23: define FOO_CHECK_MY_OTHER_PROG
- 24: if ! which my-other-prog >/dev/null 2>&1; then \
- 25: echo "You need my-other-prog to generate the foo document as PDF"; \
- 26: exit 1; \
- 27: fi
- 28: endef
- 29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG
- 30:
- 31: $(eval $(call asciidoc-document))
- ----
|