1cb43fb57SMauro Carvalho Chehab# -*- makefile -*- 2cb43fb57SMauro Carvalho Chehab# Makefile for Sphinx documentation 3cb43fb57SMauro Carvalho Chehab# 4cb43fb57SMauro Carvalho Chehab 5a1af8d71SMasahiro Yamada# for cleaning 6a1af8d71SMasahiro Yamadasubdir- := devicetree/bindings 7cb43fb57SMauro Carvalho Chehab 830c83405SMauro Carvalho Chehabifneq ($(MAKECMDGOALS),cleandocs) 9b1663d7eSMauro Carvalho Chehab# Check for broken documentation file references 10b1663d7eSMauro Carvalho Chehabifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y) 11eaae0ad9SJonathan Corbet$(shell $(srctree)/tools/docs/documentation-file-ref-check --warn) 12b1663d7eSMauro Carvalho Chehabendif 13b1663d7eSMauro Carvalho Chehab 1475442fb0SMauro Carvalho Chehab# Check for broken ABI files 1575442fb0SMauro Carvalho Chehabifeq ($(CONFIG_WARN_ABI_ERRORS),y) 16a5dd9301SJonathan Corbet$(shell $(srctree)/tools/docs/get_abi.py --dir $(srctree)/Documentation/ABI validate) 1775442fb0SMauro Carvalho Chehabendif 1830c83405SMauro Carvalho Chehabendif 1975442fb0SMauro Carvalho Chehab 20cb43fb57SMauro Carvalho Chehab# You can set these variables from the command line. 21cb43fb57SMauro Carvalho ChehabSPHINXBUILD = sphinx-build 22cb43fb57SMauro Carvalho ChehabSPHINXOPTS = 23cb43fb57SMauro Carvalho ChehabSPHINXDIRS = . 24fca7216bSMauro Carvalho ChehabDOCS_THEME = 25135707d3SMauro Carvalho ChehabDOCS_CSS = 262118ba7dSMauro Carvalho ChehabRUSTDOC = 27cb43fb57SMauro Carvalho ChehabPAPER = 28cb43fb57SMauro Carvalho ChehabBUILDDIR = $(obj)/output 29cb43fb57SMauro Carvalho ChehabPDFLATEX = xelatex 306b22ce00SAkira YokosawaLATEXOPTS = -interaction=batchmode -no-shell-escape 31cb43fb57SMauro Carvalho Chehab 32819667bcSMauro Carvalho ChehabPYTHONPYCACHEPREFIX ?= $(abspath $(BUILDDIR)/__pycache__) 33819667bcSMauro Carvalho Chehab 34819667bcSMauro Carvalho Chehab# Wrapper for sphinx-build 35819667bcSMauro Carvalho Chehab 36819667bcSMauro Carvalho ChehabBUILD_WRAPPER = $(srctree)/tools/docs/sphinx-build-wrapper 37819667bcSMauro Carvalho Chehab 381e596d5eSAkira Yokosawa# For denylisting "variable font" files 391e596d5eSAkira Yokosawa# Can be overridden by setting as an env variable 401e596d5eSAkira YokosawaFONTS_CONF_DENY_VF ?= $(HOME)/deny-vf 411e596d5eSAkira Yokosawa 42cb43fb57SMauro Carvalho Chehab# User-friendly check for sphinx-build 43cb43fb57SMauro Carvalho ChehabHAVE_SPHINX := $(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi) 44cb43fb57SMauro Carvalho Chehab 45683dd3f7SMauro Carvalho Chehabifneq ($(wildcard $(srctree)/.config),) 462118ba7dSMauro Carvalho Chehabifeq ($(CONFIG_RUST),y) 47683dd3f7SMauro Carvalho Chehab RUSTDOC=--rustdoc 48683dd3f7SMauro Carvalho Chehabendif 492118ba7dSMauro Carvalho Chehabendif 502118ba7dSMauro Carvalho Chehab 51cb43fb57SMauro Carvalho Chehabifeq ($(HAVE_SPHINX),0) 52cb43fb57SMauro Carvalho Chehab 53cb43fb57SMauro Carvalho Chehab.DEFAULT: 54cb43fb57SMauro Carvalho Chehab $(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.) 5592a037f0SMauro Carvalho Chehab @echo 56abd61d1fSMauro Carvalho Chehab @$(srctree)/tools/docs/sphinx-pre-install 57cb43fb57SMauro Carvalho Chehab @echo " SKIP Sphinx $@ target." 58cb43fb57SMauro Carvalho Chehab 59cb43fb57SMauro Carvalho Chehabelse # HAVE_SPHINX 60cb43fb57SMauro Carvalho Chehab 61819667bcSMauro Carvalho Chehab# Common documentation targets 622118ba7dSMauro Carvalho Chehabhtmldocs mandocs infodocs texinfodocs latexdocs epubdocs xmldocs pdfdocs linkcheckdocs: 630a4cd1c6SMauro Carvalho Chehab $(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ 640a4cd1c6SMauro Carvalho Chehab $(srctree)/tools/docs/sphinx-pre-install --version-check 650a4cd1c6SMauro Carvalho Chehab +$(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ 660a4cd1c6SMauro Carvalho Chehab $(PYTHON3) $(BUILD_WRAPPER) $@ \ 6772603d73SMauro Carvalho Chehab --sphinxdirs="$(SPHINXDIRS)" $(RUSTDOC) \ 68819667bcSMauro Carvalho Chehab --builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \ 69819667bcSMauro Carvalho Chehab --theme=$(DOCS_THEME) --css=$(DOCS_CSS) --paper=$(PAPER) 7028f7c994SMauro Carvalho Chehab 71cb43fb57SMauro Carvalho Chehab 72ff1354edSMauro Carvalho Chehabendif 73cb43fb57SMauro Carvalho Chehab 74cb43fb57SMauro Carvalho Chehab# The following targets are independent of HAVE_SPHINX, and the rules should 75cb43fb57SMauro Carvalho Chehab# work or silently pass without Sphinx. 76cb43fb57SMauro Carvalho Chehab 77ff1354edSMauro Carvalho Chehabhtmldocs-redirects: $(srctree)/Documentation/.renames.txt 78ff1354edSMauro Carvalho Chehab @tools/docs/gen-redirects.py --output $(BUILDDIR) < $< 79ff1354edSMauro Carvalho Chehab 80e8939222SJani Nikularefcheckdocs: 81eaae0ad9SJonathan Corbet $(Q)cd $(srctree); tools/docs/documentation-file-ref-check 82e8939222SJani Nikula 83cb43fb57SMauro Carvalho Chehabcleandocs: 84cb43fb57SMauro Carvalho Chehab $(Q)rm -rf $(BUILDDIR) 85cb43fb57SMauro Carvalho Chehab 86819667bcSMauro Carvalho Chehab# Used only on help 876894ea0bSBhanu Seshu Kumar Valluri_SPHINXDIRS = $(shell printf "%s\n" $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst)) | sort -f) 88819667bcSMauro Carvalho Chehab 89cb43fb57SMauro Carvalho Chehabdochelp: 90cb43fb57SMauro Carvalho Chehab @echo ' Linux kernel internal documentation in different formats from ReST:' 91cb43fb57SMauro Carvalho Chehab @echo ' htmldocs - HTML' 92f2c2f649SVegard Nossum @echo ' htmldocs-redirects - generate HTML redirects for moved pages' 931f050e90SMaxim Cournoyer @echo ' texinfodocs - Texinfo' 941f050e90SMaxim Cournoyer @echo ' infodocs - Info' 957e8a8143SMauro Carvalho Chehab @echo ' mandocs - Man pages' 96cb43fb57SMauro Carvalho Chehab @echo ' latexdocs - LaTeX' 97cb43fb57SMauro Carvalho Chehab @echo ' pdfdocs - PDF' 98cb43fb57SMauro Carvalho Chehab @echo ' epubdocs - EPUB' 99cb43fb57SMauro Carvalho Chehab @echo ' xmldocs - XML' 100a64c0440SGeert Uytterhoeven @echo ' linkcheckdocs - check for broken external links' 101a64c0440SGeert Uytterhoeven @echo ' (will connect to external hosts)' 102a64c0440SGeert Uytterhoeven @echo ' refcheckdocs - check for references to non-existing files under' 103a64c0440SGeert Uytterhoeven @echo ' Documentation' 104cb43fb57SMauro Carvalho Chehab @echo ' cleandocs - clean all generated files' 105cb43fb57SMauro Carvalho Chehab @echo 106cb43fb57SMauro Carvalho Chehab @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' 107*62d78515SMauro Carvalho Chehab @echo ' top level values for SPHINXDIRS are: $(_SPHINXDIRS)' 108*62d78515SMauro Carvalho Chehab @echo ' you may also use a subdirectory like SPHINXDIRS=userspace-api/media,' 109*62d78515SMauro Carvalho Chehab @echo ' provided that there is an index.rst file at the subdirectory.' 110cb43fb57SMauro Carvalho Chehab @echo 111fca7216bSMauro Carvalho Chehab @echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.' 112fca7216bSMauro Carvalho Chehab @echo 113135707d3SMauro Carvalho Chehab @echo ' make DOCS_CSS={a .css file} adds a DOCS_CSS override file for html/epub output.' 114135707d3SMauro Carvalho Chehab @echo 115c514b13fSMauro Carvalho Chehab @echo ' make PAPER={a4|letter} Specifies the paper size used for LaTeX/PDF output.' 116c514b13fSMauro Carvalho Chehab @echo 117c6879037SMauro Carvalho Chehab @echo ' make FONTS_CONF_DENY_VF={path} sets a deny list to block variable Noto CJK fonts' 118c6879037SMauro Carvalho Chehab @echo ' for PDF build. See tools/docs/lib/latex_fonts.py for more details' 119c6879037SMauro Carvalho Chehab @echo 1209effc8f7SShuah Khan @echo ' Default location for the generated documents is Documentation/output' 121