]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - Documentation/conf.py
dt-bindings: trivial-devices: Allow 'spi-max-frequency' property
[mirror_ubuntu-jammy-kernel.git] / Documentation / conf.py
CommitLineData
22cba31b
JN
1# -*- coding: utf-8 -*-
2#
3# The Linux Kernel documentation build configuration file, created by
4# sphinx-quickstart on Fri Feb 12 13:51:46 2016.
5#
6# This file is execfile()d with the current directory set to its
7# containing dir.
8#
9# Note that not all possible configuration values are present in this
10# autogenerated file.
11#
12# All configuration values have a default; values that are commented out
13# serve to show the default.
14
15import sys
16import os
d4fe7e14
MCC
17import sphinx
18
e0de2b59
MCC
19from subprocess import check_output
20
d4fe7e14 21# Get Sphinx version
c46988ae 22major, minor, patch = sphinx.version_info[:3]
d4fe7e14 23
22cba31b
JN
24
25# If extensions (or modules to document with autodoc) are in another directory,
26# add these directories to sys.path here. If the directory is relative to the
27# documentation root, use os.path.abspath to make it absolute, like shown here.
24dcdeb2 28sys.path.insert(0, os.path.abspath('sphinx'))
606b9ac8 29from load_config import loadConfig
22cba31b
JN
30
31# -- General configuration ------------------------------------------------
32
33# If your documentation needs a minimal Sphinx version, state it here.
f546ff0c 34needs_sphinx = '1.7'
22cba31b
JN
35
36# Add any Sphinx extension module names here, as strings. They can be
37# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
38# ones.
afde706a 39extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include',
aa204855 40 'kfigure', 'sphinx.ext.ifconfig', 'automarkup',
a7ee04b3 41 'maintainers_include', 'sphinx.ext.autosectionlabel',
63fdc462 42 'kernel_abi', 'kernel_feat']
22cba31b 43
afde706a
JC
44#
45# cdomain is badly broken in Sphinx 3+. Leaving it out generates *most*
46# of the docs correctly, but not all. Scream bloody murder but allow
47# the process to proceed; hopefully somebody will fix this properly soon.
48#
49if major >= 3:
50 sys.stderr.write('''WARNING: The kernel documentation build process
14059a38 51 support for Sphinx v3.0 and above is brand new. Be prepared for
36d8900d 52 possible issues in the generated output.\n''')
d29f34c0 53 if (major > 3) or (minor > 0 or patch >= 2):
b34b86d7
MCC
54 # Sphinx c function parser is more pedantic with regards to type
55 # checking. Due to that, having macros at c:function cause problems.
56 # Those needed to be scaped by using c_id_attributes[] array
57 c_id_attributes = [
58 # GCC Compiler types not parsed by Sphinx:
59 "__restrict__",
60
61 # include/linux/compiler_types.h:
62 "__iomem",
63 "__kernel",
64 "noinstr",
65 "notrace",
66 "__percpu",
67 "__rcu",
68 "__user",
69
70 # include/linux/compiler_attributes.h:
71 "__alias",
72 "__aligned",
73 "__aligned_largest",
74 "__always_inline",
75 "__assume_aligned",
76 "__cold",
77 "__attribute_const__",
78 "__copy",
79 "__pure",
80 "__designated_init",
81 "__visible",
82 "__printf",
83 "__scanf",
84 "__gnu_inline",
85 "__malloc",
86 "__mode",
87 "__no_caller_saved_registers",
88 "__noclone",
89 "__nonstring",
90 "__noreturn",
91 "__packed",
92 "__pure",
93 "__section",
94 "__always_unused",
95 "__maybe_unused",
96 "__used",
97 "__weak",
98 "noinline",
99
100 # include/linux/memblock.h:
101 "__init_memblock",
102 "__meminit",
103
104 # include/linux/init.h:
105 "__init",
106 "__ref",
107
108 # include/linux/linkage.h:
109 "asmlinkage",
110 ]
111
afde706a
JC
112else:
113 extensions.append('cdomain')
114
4658b0eb
MCC
115# Ensure that autosectionlabel will produce unique names
116autosectionlabel_prefix_document = True
117autosectionlabel_maxdepth = 2
118
f546ff0c 119extensions.append("sphinx.ext.imgmath")
22cba31b
JN
120
121# Add any paths that contain templates here, relative to this directory.
122templates_path = ['_templates']
123
124# The suffix(es) of source filenames.
125# You can specify multiple suffix as a list of string:
126# source_suffix = ['.rst', '.md']
127source_suffix = '.rst'
128
129# The encoding of source files.
130#source_encoding = 'utf-8-sig'
131
132# The master toctree document.
133master_doc = 'index'
134
135# General information about the project.
136project = 'The Linux Kernel'
dc36143f 137copyright = 'The kernel development community'
22cba31b
JN
138author = 'The kernel development community'
139
140# The version info for the project you're documenting, acts as replacement for
141# |version| and |release|, also used in various other places throughout the
142# built documents.
143#
c13ce448
JN
144# In a normal build, version and release are are set to KERNELVERSION and
145# KERNELRELEASE, respectively, from the Makefile via Sphinx command line
146# arguments.
147#
148# The following code tries to extract the information by reading the Makefile,
149# when Sphinx is run directly (e.g. by Read the Docs).
150try:
151 makefile_version = None
152 makefile_patchlevel = None
153 for line in open('../Makefile'):
154 key, val = [x.strip() for x in line.split('=', 2)]
155 if key == 'VERSION':
156 makefile_version = val
157 elif key == 'PATCHLEVEL':
158 makefile_patchlevel = val
159 if makefile_version and makefile_patchlevel:
160 break
161except:
162 pass
163finally:
164 if makefile_version and makefile_patchlevel:
165 version = release = makefile_version + '.' + makefile_patchlevel
166 else:
c13ce448 167 version = release = "unknown version"
22cba31b
JN
168
169# The language for content autogenerated by Sphinx. Refer to documentation
170# for a list of supported languages.
171#
172# This is also used if you do content translation via gettext catalogs.
173# Usually you set "language" from the command line for these cases.
174language = None
175
176# There are two options for replacing |today|: either, you set today to some
177# non-false value, then it is used:
178#today = ''
179# Else, today_fmt is used as the format for a strftime call.
180#today_fmt = '%B %d, %Y'
181
182# List of patterns, relative to source directory, that match files and
183# directories to ignore when looking for source files.
184exclude_patterns = ['output']
185
186# The reST default role (used for this markup: `text`) to use for all
187# documents.
188#default_role = None
189
190# If true, '()' will be appended to :func: etc. cross-reference text.
191#add_function_parentheses = True
192
193# If true, the current module name will be prepended to all description
194# unit titles (such as .. function::).
195#add_module_names = True
196
197# If true, sectionauthor and moduleauthor directives will be shown in the
198# output. They are ignored by default.
199#show_authors = False
200
201# The name of the Pygments (syntax highlighting) style to use.
202pygments_style = 'sphinx'
203
204# A list of ignored prefixes for module index sorting.
205#modindex_common_prefix = []
206
207# If true, keep warnings as "system message" paragraphs in the built documents.
208#keep_warnings = False
209
210# If true, `todo` and `todoList` produce output, else they produce nothing.
211todo_include_todos = False
212
fd5d6669 213primary_domain = 'c'
b459106e 214highlight_language = 'none'
22cba31b
JN
215
216# -- Options for HTML output ----------------------------------------------
217
218# The theme to use for HTML and HTML Help pages. See the documentation for
219# a list of builtin themes.
220
221# The Read the Docs theme is available from
222# - https://github.com/snide/sphinx_rtd_theme
223# - https://pypi.python.org/pypi/sphinx_rtd_theme
224# - python-sphinx-rtd-theme package (on Debian)
225try:
226 import sphinx_rtd_theme
227 html_theme = 'sphinx_rtd_theme'
228 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
229except ImportError:
230 sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.\n')
231
232# Theme options are theme-specific and customize the look and feel of a theme
233# further. For a list of options available for each theme, see the
234# documentation.
235#html_theme_options = {}
236
237# Add any paths that contain custom themes here, relative to this directory.
238#html_theme_path = []
239
240# The name for this set of Sphinx documents. If None, it defaults to
241# "<project> v<release> documentation".
242#html_title = None
243
244# A shorter title for the navigation bar. Default is the same as html_title.
245#html_short_title = None
246
247# The name of an image file (relative to this directory) to place at the top
248# of the sidebar.
249#html_logo = None
250
251# The name of an image file (within the static path) to use as favicon of the
252# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
253# pixels large.
254#html_favicon = None
255
256# Add any paths that contain custom static files (such as style sheets) here,
257# relative to this directory. They are copied after the builtin static files,
258# so a file named "default.css" will overwrite the builtin "default.css".
bc214671
MH
259
260html_static_path = ['sphinx-static']
261
262html_context = {
263 'css_files': [
264 '_static/theme_overrides.css',
265 ],
266}
22cba31b
JN
267
268# Add any extra paths that contain custom files (such as robots.txt or
269# .htaccess) here, relative to this directory. These files are copied
270# directly to the root of the documentation.
271#html_extra_path = []
272
273# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
274# using the given strftime format.
275#html_last_updated_fmt = '%b %d, %Y'
276
277# If true, SmartyPants will be used to convert quotes and dashes to
278# typographically correct entities.
7282a93f 279html_use_smartypants = False
22cba31b
JN
280
281# Custom sidebar templates, maps document names to template names.
282#html_sidebars = {}
283
284# Additional templates that should be rendered to pages, maps page names to
285# template names.
286#html_additional_pages = {}
287
288# If false, no module index is generated.
289#html_domain_indices = True
290
291# If false, no index is generated.
292#html_use_index = True
293
294# If true, the index is split into individual pages for each letter.
295#html_split_index = False
296
297# If true, links to the reST sources are added to the pages.
298#html_show_sourcelink = True
299
300# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
301#html_show_sphinx = True
302
303# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
304#html_show_copyright = True
305
306# If true, an OpenSearch description file will be output, and all pages will
307# contain a <link> tag referring to it. The value of this option must be the
308# base URL from which the finished HTML is served.
309#html_use_opensearch = ''
310
311# This is the file name suffix for HTML files (e.g. ".xhtml").
312#html_file_suffix = None
313
314# Language to be used for generating the HTML full-text search index.
315# Sphinx supports the following languages:
316# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
317# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
318#html_search_language = 'en'
319
320# A dictionary with options for the search language support, empty by default.
321# Now only 'ja' uses this config value
322#html_search_options = {'type': 'default'}
323
324# The name of a javascript file (relative to the configuration directory) that
325# implements a search results scorer. If empty, the default will be used.
326#html_search_scorer = 'scorer.js'
327
328# Output file base name for HTML help builder.
329htmlhelp_basename = 'TheLinuxKerneldoc'
330
331# -- Options for LaTeX output ---------------------------------------------
332
333latex_elements = {
334# The paper size ('letterpaper' or 'a4paper').
caee5cde 335'papersize': 'a4paper',
22cba31b
JN
336
337# The font size ('10pt', '11pt' or '12pt').
44ba0bb4 338'pointsize': '11pt',
22cba31b
JN
339
340# Latex figure (float) alignment
341#'figure_align': 'htbp',
caee5cde 342
a682ec4b
MCC
343# Don't mangle with UTF-8 chars
344'inputenc': '',
345'utf8extra': '',
346
caee5cde
MCC
347# Additional stuff for the LaTeX preamble.
348 'preamble': '''
9fdcd6af
MCC
349 % Use some font with UTF-8 support with XeLaTeX
350 \\usepackage{fontspec}
44ba0bb4
DW
351 \\setsansfont{DejaVu Sans}
352 \\setromanfont{DejaVu Serif}
9fdcd6af 353 \\setmonofont{DejaVu Sans Mono}
e0de2b59
MCC
354 '''
355}
9fdcd6af 356
e0de2b59
MCC
357# At least one book (translations) may have Asian characters
358# with are only displayed if xeCJK is used
359
360cjk_cmd = check_output(['fc-list', '--format="%{family[0]}\n"']).decode('utf-8', 'ignore')
361if cjk_cmd.find("Noto Sans CJK SC") >= 0:
362 print ("enabling CJK for LaTeX builder")
363 latex_elements['preamble'] += '''
24889dad
MCC
364 % This is needed for translations
365 \\usepackage{xeCJK}
366 \\setCJKmainfont{Noto Sans CJK SC}
9fdcd6af 367 '''
9fdcd6af
MCC
368
369# Fix reference escape troubles with Sphinx 1.4.x
f546ff0c 370if major == 1:
9fdcd6af
MCC
371 latex_elements['preamble'] += '\\renewcommand*{\\DUrole}[2]{ #2 }\n'
372
9fdcd6af
MCC
373# With Sphinx 1.6, it is possible to change the Bg color directly
374# by using:
375# \definecolor{sphinxnoteBgColor}{RGB}{204,255,255}
376# \definecolor{sphinxwarningBgColor}{RGB}{255,204,204}
377# \definecolor{sphinxattentionBgColor}{RGB}{255,255,204}
378# \definecolor{sphinximportantBgColor}{RGB}{192,255,204}
379#
380# However, it require to use sphinx heavy box with:
381#
382# \renewenvironment{sphinxlightbox} {%
383# \\begin{sphinxheavybox}
384# }
385# \\end{sphinxheavybox}
386# }
387#
388# Unfortunately, the implementation is buggy: if a note is inside a
389# table, it isn't displayed well. So, for now, let's use boring
390# black and white notes.
633d612b 391
22cba31b
JN
392# Grouping the document tree into LaTeX files. List of tuples
393# (source start file, target name, title,
394# author, documentclass [howto, manual, or own class]).
c2b563d8 395# Sorted in alphabetical order
22cba31b 396latex_documents = [
22cba31b
JN
397]
398
9d42afbe
MCC
399# Add all other index files from Documentation/ subdirectories
400for fn in os.listdir('.'):
401 doc = os.path.join(fn, "index")
402 if os.path.exists(doc + ".rst"):
403 has = False
404 for l in latex_documents:
405 if l[0] == doc:
406 has = True
407 break
408 if not has:
409 latex_documents.append((doc, fn + '.tex',
410 'Linux %s Documentation' % fn.capitalize(),
411 'The kernel development community',
412 'manual'))
413
22cba31b
JN
414# The name of an image file (relative to this directory) to place at the top of
415# the title page.
416#latex_logo = None
417
418# For "manual" documents, if this is true, then toplevel headings are parts,
419# not chapters.
420#latex_use_parts = False
421
422# If true, show page references after internal links.
423#latex_show_pagerefs = False
424
425# If true, show URL addresses after external links.
426#latex_show_urls = False
427
428# Documents to append as an appendix to all manuals.
429#latex_appendices = []
430
431# If false, no module index is generated.
432#latex_domain_indices = True
433
434
435# -- Options for manual page output ---------------------------------------
436
437# One entry per manual page. List of tuples
438# (source start file, name, description, authors, manual section).
439man_pages = [
440 (master_doc, 'thelinuxkernel', 'The Linux Kernel Documentation',
441 [author], 1)
442]
443
444# If true, show URL addresses after external links.
445#man_show_urls = False
446
447
448# -- Options for Texinfo output -------------------------------------------
449
450# Grouping the document tree into Texinfo files. List of tuples
451# (source start file, target name, title, author,
452# dir menu entry, description, category)
453texinfo_documents = [
454 (master_doc, 'TheLinuxKernel', 'The Linux Kernel Documentation',
455 author, 'TheLinuxKernel', 'One line description of project.',
456 'Miscellaneous'),
457]
458
459# Documents to append as an appendix to all manuals.
460#texinfo_appendices = []
461
462# If false, no module index is generated.
463#texinfo_domain_indices = True
464
465# How to display URL addresses: 'footnote', 'no', or 'inline'.
466#texinfo_show_urls = 'footnote'
467
468# If true, do not generate a @detailmenu in the "Top" node's menu.
469#texinfo_no_detailmenu = False
470
471
472# -- Options for Epub output ----------------------------------------------
473
474# Bibliographic Dublin Core info.
475epub_title = project
476epub_author = author
477epub_publisher = author
478epub_copyright = copyright
479
480# The basename for the epub file. It defaults to the project name.
481#epub_basename = project
482
483# The HTML theme for the epub output. Since the default themes are not
484# optimized for small screen space, using the same theme for HTML and epub
485# output is usually not wise. This defaults to 'epub', a theme designed to save
486# visual space.
487#epub_theme = 'epub'
488
489# The language of the text. It defaults to the language option
490# or 'en' if the language is not set.
491#epub_language = ''
492
493# The scheme of the identifier. Typical schemes are ISBN or URL.
494#epub_scheme = ''
495
496# The unique identifier of the text. This can be a ISBN number
497# or the project homepage.
498#epub_identifier = ''
499
500# A unique identification for the text.
501#epub_uid = ''
502
503# A tuple containing the cover image and cover page html template filenames.
504#epub_cover = ()
505
506# A sequence of (type, uri, title) tuples for the guide element of content.opf.
507#epub_guide = ()
508
509# HTML files that should be inserted before the pages created by sphinx.
510# The format is a list of tuples containing the path and title.
511#epub_pre_files = []
512
513# HTML files that should be inserted after the pages created by sphinx.
514# The format is a list of tuples containing the path and title.
515#epub_post_files = []
516
517# A list of files that should not be packed into the epub file.
518epub_exclude_files = ['search.html']
519
520# The depth of the table of contents in toc.ncx.
521#epub_tocdepth = 3
522
523# Allow duplicate toc entries.
524#epub_tocdup = True
525
526# Choose between 'default' and 'includehidden'.
527#epub_tocscope = 'default'
528
529# Fix unsupported image types using the Pillow.
530#epub_fix_images = False
531
532# Scale large images.
533#epub_max_image_width = 0
534
535# How to display URL addresses: 'footnote', 'no', or 'inline'.
536#epub_show_urls = 'inline'
537
538# If false, no index is generated.
539#epub_use_index = True
540
541#=======
542# rst2pdf
543#
544# Grouping the document tree into PDF files. List of tuples
545# (source start file, target name, title, author, options).
546#
93431e06 547# See the Sphinx chapter of https://ralsina.me/static/manual.pdf
22cba31b
JN
548#
549# FIXME: Do not add the index file here; the result will be too big. Adding
550# multiple PDF files here actually tries to get the cross-referencing right
551# *between* PDF files.
552pdf_documents = [
520a2477 553 ('kernel-documentation', u'Kernel', u'Kernel', u'J. Random Bozo'),
22cba31b 554]
24dcdeb2
JN
555
556# kernel-doc extension configuration for running Sphinx directly (e.g. by Read
557# the Docs). In a normal build, these are supplied from the Makefile via command
558# line arguments.
559kerneldoc_bin = '../scripts/kernel-doc'
560kerneldoc_srctree = '..'
606b9ac8
MH
561
562# ------------------------------------------------------------------------------
563# Since loadConfig overwrites settings from the global namespace, it has to be
564# the last statement in the conf.py file
565# ------------------------------------------------------------------------------
566loadConfig(globals())