mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	Sphinx supports generating Texinfo sources and Info documentation, which can be navigated easily and is convenient to search (via the indexed nodes or anchors, for example). This is basically the same as 1f050e904dd6f2955eecbd22031d912ccb2e7683, which was recently applied to the Linux kernel. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # -*- makefile -*-
 | |
| # Makefile for Sphinx documentation
 | |
| #
 | |
| 
 | |
| subdir-y :=
 | |
| 
 | |
| # You can set these variables from the command line.
 | |
| SPHINXBUILD   = sphinx-build
 | |
| SPHINXOPTS    = -W
 | |
| SPHINXDIRS    = .
 | |
| _SPHINXDIRS   = $(patsubst $(srctree)/doc/%/conf.py,%,$(wildcard $(srctree)/doc/*/conf.py))
 | |
| SPHINX_CONF   = conf.py
 | |
| PAPER         =
 | |
| BUILDDIR      = $(obj)/output
 | |
| PDFLATEX      = xelatex
 | |
| LATEXOPTS     = -interaction=batchmode
 | |
| 
 | |
| # User-friendly check for sphinx-build
 | |
| HAVE_SPHINX := $(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi)
 | |
| 
 | |
| ifeq ($(HAVE_SPHINX),0)
 | |
| 
 | |
| .DEFAULT:
 | |
| 	$(warning The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed and in PATH, or set the SPHINXBUILD make variable to point to the full path of the '$(SPHINXBUILD)' executable.)
 | |
| 	@echo
 | |
| 	@./scripts/sphinx-pre-install
 | |
| 	@echo "  SKIP    Sphinx $@ target."
 | |
| 
 | |
| else # HAVE_SPHINX
 | |
| 
 | |
| # User-friendly check for pdflatex
 | |
| HAVE_PDFLATEX := $(shell if which $(PDFLATEX) >/dev/null 2>&1; then echo 1; else echo 0; fi)
 | |
| 
 | |
| # Internal variables.
 | |
| PAPEROPT_a4     = -D latex_paper_size=a4
 | |
| PAPEROPT_letter = -D latex_paper_size=letter
 | |
| KERNELDOC       = $(srctree)/scripts/kernel-doc
 | |
| KERNELDOC_CONF  = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
 | |
| ALLSPHINXOPTS   =  $(KERNELDOC_CONF) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
 | |
| # the i18n builder cannot share the environment and doctrees with the others
 | |
| I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
 | |
| 
 | |
| # commands; the 'cmd' from scripts/Kbuild.include is not *loopable*
 | |
| loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
 | |
| 
 | |
| # $2 sphinx builder e.g. "html"
 | |
| # $3 name of the build subfolder / e.g. "media", used as:
 | |
| #    * dest folder relative to $(BUILDDIR) and
 | |
| #    * cache folder relative to $(BUILDDIR)/.doctrees
 | |
| # $4 dest subfolder e.g. "man" for man pages at media/man
 | |
| # $5 reST source folder relative to $(srctree)/$(src),
 | |
| #    e.g. "media" for the linux-tv book-set at ./doc/media
 | |
| 
 | |
| quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
 | |
|       cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=doc/media $2 && \
 | |
| 	PYTHONDONTWRITEBYTECODE=1 \
 | |
| 	BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
 | |
| 	$(SPHINXBUILD) \
 | |
| 	-j$(shell nproc) \
 | |
| 	-b $2 \
 | |
| 	-j auto \
 | |
| 	-c $(abspath $(srctree)/$(src)) \
 | |
| 	-d $(abspath $(BUILDDIR)/.doctrees/$3) \
 | |
| 	-D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \
 | |
| 	$(ALLSPHINXOPTS) \
 | |
| 	$(abspath $(srctree)/$(src)/$5) \
 | |
| 	$(abspath $(BUILDDIR)/$3/$4)
 | |
| 
 | |
| htmldocs:
 | |
| 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
 | |
| 
 | |
| texinfodocs:
 | |
| 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,texinfo,$(var),texinfo,$(var)))
 | |
| 
 | |
| # Note: the 'info' Make target is generated by sphinx itself when
 | |
| # running the texinfodocs target defined above.
 | |
| infodocs: texinfodocs
 | |
| 	$(MAKE) -C $(BUILDDIR)/texinfo info
 | |
| 
 | |
| linkcheckdocs:
 | |
| 	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
 | |
| 
 | |
| latexdocs:
 | |
| 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,latex,$(var),latex,$(var)))
 | |
| 
 | |
| ifeq ($(HAVE_PDFLATEX),0)
 | |
| 
 | |
| pdfdocs:
 | |
| 	$(warning The '$(PDFLATEX)' command was not found. Make sure you have it installed and in PATH to produce PDF output.)
 | |
| 	@echo "  SKIP    Sphinx $@ target."
 | |
| 
 | |
| else # HAVE_PDFLATEX
 | |
| 
 | |
| pdfdocs: latexdocs
 | |
| 	$(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX=$(PDFLATEX) LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit;)
 | |
| 
 | |
| endif # HAVE_PDFLATEX
 | |
| 
 | |
| epubdocs:
 | |
| 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
 | |
| 
 | |
| xmldocs:
 | |
| 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var)))
 | |
| 
 | |
| endif # HAVE_SPHINX
 | |
| 
 | |
| # The following targets are independent of HAVE_SPHINX, and the rules should
 | |
| # work or silently pass without Sphinx.
 | |
| 
 | |
| refcheckdocs:
 | |
| 	$(Q)cd $(srctree);scripts/documentation-file-ref-check
 | |
| 
 | |
| cleandocs:
 | |
| 	$(Q)rm -rf $(BUILDDIR)
 | |
| 	$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=doc/media clean
 | |
| 
 | |
| dochelp:
 | |
| 	@echo  ' U-Boot documentation in different formats from ReST:'
 | |
| 	@echo  '  htmldocs        - HTML'
 | |
| 	@echo  '  texinfodocs     - Texinfo'
 | |
| 	@echo  '  infodocs        - Info'
 | |
| 	@echo  '  latexdocs       - LaTeX'
 | |
| 	@echo  '  pdfdocs         - PDF'
 | |
| 	@echo  '  epubdocs        - EPUB'
 | |
| 	@echo  '  xmldocs         - XML'
 | |
| 	@echo  '  linkcheckdocs   - check for broken external links (will connect to external hosts)'
 | |
| 	@echo  '  refcheckdocs    - check for references to non-existing files under Documentation'
 | |
| 	@echo  '  cleandocs       - clean all generated files'
 | |
| 	@echo
 | |
| 	@echo  '  make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
 | |
| 	@echo  '  valid values for SPHINXDIRS are: $(_SPHINXDIRS)'
 | |
| 	@echo
 | |
| 	@echo  '  make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build'
 | |
| 	@echo  '  configuration. This is e.g. useful to build with nit-picking config.'
 | |
| 	@echo
 | |
| 	@echo  '  Default location for the generated documents is doc/output'
 |