xref: /linux/Documentation/Makefile (revision 62d785159c7a5ccfae87b5849b17e51cb8fce9b1)
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