115 lines · 4.1 KB · Makefile
RawDownload
# -*- makefile -*-# Makefile for Sphinx documentation# # for cleaningsubdir- := devicetree/bindings ifneq ($(MAKECMDGOALS),cleandocs)# Check for broken documentation file referencesifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)$(shell $(srctree)/tools/docs/documentation-file-ref-check --warn)endif # Check for broken ABI filesifeq ($(CONFIG_WARN_ABI_ERRORS),y)$(shell $(srctree)/tools/docs/get_abi.py --dir $(srctree)/Documentation/ABI validate)endifendif # You can set these variables from the command line.SPHINXBUILD   = sphinx-buildSPHINXOPTS    =SPHINXDIRS    = .DOCS_THEME    =DOCS_CSS      =RUSTDOC       =PAPER         =BUILDDIR      = $(obj)/outputPDFLATEX      = xelatexLATEXOPTS     = -interaction=batchmode -no-shell-escape PYTHONPYCACHEPREFIX ?= $(abspath $(BUILDDIR)/__pycache__) # Wrapper for sphinx-build BUILD_WRAPPER = $(srctree)/tools/docs/sphinx-build-wrapper # For denylisting "variable font" files# Can be overridden by setting as an env variableFONTS_CONF_DENY_VF ?= $(HOME)/deny-vf # User-friendly check for sphinx-buildHAVE_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	@$(srctree)/tools/docs/sphinx-pre-install	@echo "  SKIP    Sphinx $@ target." else # HAVE_SPHINX # Common documentation targetshtmldocs mandocs infodocs texinfodocs latexdocs epubdocs xmldocs pdfdocs linkcheckdocs:	$(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \		$(srctree)/tools/docs/sphinx-pre-install --version-check	+$(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \		$(PYTHON3) $(BUILD_WRAPPER) $@ \		--sphinxdirs="$(SPHINXDIRS)" $(RUSTDOC) \		--builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \		--theme=$(DOCS_THEME) --css=$(DOCS_CSS) --paper=$(PAPER)  endif # The following targets are independent of HAVE_SPHINX, and the rules should# work or silently pass without Sphinx. htmldocs-redirects: $(srctree)/Documentation/.renames.txt	@tools/docs/gen-redirects.py --output $(BUILDDIR) < $< refcheckdocs:	$(Q)cd $(srctree); tools/docs/documentation-file-ref-check cleandocs:	$(Q)rm -rf $(BUILDDIR) # Used only on help_SPHINXDIRS   = $(shell printf "%s\n" $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst)) | sort -f) dochelp:	@echo  ' Linux kernel internal documentation in different formats from ReST:'	@echo  '  htmldocs        - HTML'	@echo  '  htmldocs-redirects - generate HTML redirects for moved pages'	@echo  '  texinfodocs     - Texinfo'	@echo  '  infodocs        - Info'	@echo  '  mandocs         - Man pages'	@echo  '  latexdocs       - LaTeX'	@echo  '  pdfdocs         - PDF'	@echo  '  epubdocs        - EPUB'	@echo  '  xmldocs         - XML'	@echo  '  linkcheckdocs   - check for broken external links'	@echo  '                    (will connect to external hosts)'	@echo  '  refcheckdocs    - check for references to non-existing files under'	@echo  '                    Documentation'	@echo  '  cleandocs       - clean all generated files'	@echo	@echo  '  make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'	@echo  '  top level values for SPHINXDIRS are:'	@echo  '$(_SPHINXDIRS)' | fmt -s -w 75 -g 75 | sed 's/^/    /'	@echo  '  you may also use a subdirectory like SPHINXDIRS=userspace-api/media,'	@echo  '  provided that there is an index.rst file at the subdirectory.'	@echo	@echo  '  make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.'	@echo	@echo  '  make DOCS_CSS={a .css file} adds a DOCS_CSS override file for html/epub output.'	@echo	@echo  '  make PAPER={a4|letter} Specifies the paper size used for LaTeX/PDF output.'	@echo	@echo  '  make FONTS_CONF_DENY_VF={path} sets a deny list to block variable Noto CJK fonts'	@echo  '  for PDF build. See tools/lib/python/kdoc/latex_fonts.py for more details'	@echo	@echo  '  Default location for the generated documents is Documentation/output'