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 45cb43fb57SMauro Carvalho Chehabifeq ($(HAVE_SPHINX),0) 46cb43fb57SMauro Carvalho Chehab 47cb43fb57SMauro Carvalho Chehab.DEFAULT: 48cb43fb57SMauro 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.) 4992a037f0SMauro Carvalho Chehab @echo 50abd61d1fSMauro Carvalho Chehab @$(srctree)/tools/docs/sphinx-pre-install 51cb43fb57SMauro Carvalho Chehab @echo " SKIP Sphinx $@ target." 52cb43fb57SMauro Carvalho Chehab 53cb43fb57SMauro Carvalho Chehabelse # HAVE_SPHINX 54cb43fb57SMauro Carvalho Chehab 55819667bcSMauro Carvalho Chehab# Common documentation targets 562118ba7dSMauro Carvalho Chehabhtmldocs mandocs infodocs texinfodocs latexdocs epubdocs xmldocs pdfdocs linkcheckdocs: 570a4cd1c6SMauro Carvalho Chehab $(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ 580a4cd1c6SMauro Carvalho Chehab $(srctree)/tools/docs/sphinx-pre-install --version-check 590a4cd1c6SMauro Carvalho Chehab +$(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ 600a4cd1c6SMauro Carvalho Chehab $(PYTHON3) $(BUILD_WRAPPER) $@ \ 6172603d73SMauro Carvalho Chehab --sphinxdirs="$(SPHINXDIRS)" $(RUSTDOC) \ 62819667bcSMauro Carvalho Chehab --builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \ 63819667bcSMauro Carvalho Chehab --theme=$(DOCS_THEME) --css=$(DOCS_CSS) --paper=$(PAPER) 6428f7c994SMauro Carvalho Chehab 65cb43fb57SMauro Carvalho Chehab 66ff1354edSMauro Carvalho Chehabendif 67cb43fb57SMauro Carvalho Chehab 68cb43fb57SMauro Carvalho Chehab# The following targets are independent of HAVE_SPHINX, and the rules should 69cb43fb57SMauro Carvalho Chehab# work or silently pass without Sphinx. 70cb43fb57SMauro Carvalho Chehab 71ff1354edSMauro Carvalho Chehabhtmldocs-redirects: $(srctree)/Documentation/.renames.txt 72ff1354edSMauro Carvalho Chehab @tools/docs/gen-redirects.py --output $(BUILDDIR) < $< 73ff1354edSMauro Carvalho Chehab 74e8939222SJani Nikularefcheckdocs: 75eaae0ad9SJonathan Corbet $(Q)cd $(srctree); tools/docs/documentation-file-ref-check 76e8939222SJani Nikula 77cb43fb57SMauro Carvalho Chehabcleandocs: 78cb43fb57SMauro Carvalho Chehab $(Q)rm -rf $(BUILDDIR) 79cb43fb57SMauro Carvalho Chehab 80819667bcSMauro Carvalho Chehab# Used only on help 816894ea0bSBhanu Seshu Kumar Valluri_SPHINXDIRS = $(shell printf "%s\n" $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst)) | sort -f) 82819667bcSMauro Carvalho Chehab 83cb43fb57SMauro Carvalho Chehabdochelp: 84cb43fb57SMauro Carvalho Chehab @echo ' Linux kernel internal documentation in different formats from ReST:' 85cb43fb57SMauro Carvalho Chehab @echo ' htmldocs - HTML' 86f2c2f649SVegard Nossum @echo ' htmldocs-redirects - generate HTML redirects for moved pages' 871f050e90SMaxim Cournoyer @echo ' texinfodocs - Texinfo' 881f050e90SMaxim Cournoyer @echo ' infodocs - Info' 897e8a8143SMauro Carvalho Chehab @echo ' mandocs - Man pages' 90cb43fb57SMauro Carvalho Chehab @echo ' latexdocs - LaTeX' 91cb43fb57SMauro Carvalho Chehab @echo ' pdfdocs - PDF' 92cb43fb57SMauro Carvalho Chehab @echo ' epubdocs - EPUB' 93cb43fb57SMauro Carvalho Chehab @echo ' xmldocs - XML' 94a64c0440SGeert Uytterhoeven @echo ' linkcheckdocs - check for broken external links' 95a64c0440SGeert Uytterhoeven @echo ' (will connect to external hosts)' 96a64c0440SGeert Uytterhoeven @echo ' refcheckdocs - check for references to non-existing files under' 97a64c0440SGeert Uytterhoeven @echo ' Documentation' 98cb43fb57SMauro Carvalho Chehab @echo ' cleandocs - clean all generated files' 99cb43fb57SMauro Carvalho Chehab @echo 100cb43fb57SMauro Carvalho Chehab @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' 10162d78515SMauro Carvalho Chehab @echo ' top level values for SPHINXDIRS are: $(_SPHINXDIRS)' 10262d78515SMauro Carvalho Chehab @echo ' you may also use a subdirectory like SPHINXDIRS=userspace-api/media,' 10362d78515SMauro Carvalho Chehab @echo ' provided that there is an index.rst file at the subdirectory.' 104cb43fb57SMauro Carvalho Chehab @echo 105fca7216bSMauro Carvalho Chehab @echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.' 106fca7216bSMauro Carvalho Chehab @echo 107135707d3SMauro Carvalho Chehab @echo ' make DOCS_CSS={a .css file} adds a DOCS_CSS override file for html/epub output.' 108135707d3SMauro Carvalho Chehab @echo 109c514b13fSMauro Carvalho Chehab @echo ' make PAPER={a4|letter} Specifies the paper size used for LaTeX/PDF output.' 110c514b13fSMauro Carvalho Chehab @echo 111c6879037SMauro Carvalho Chehab @echo ' make FONTS_CONF_DENY_VF={path} sets a deny list to block variable Noto CJK fonts' 112*778b8ebeSJonathan Corbet @echo ' for PDF build. See tools/lib/python/kdoc/latex_fonts.py for more details' 113c6879037SMauro Carvalho Chehab @echo 1149effc8f7SShuah Khan @echo ' Default location for the generated documents is Documentation/output' 115