Commit f2e86036 authored by Mike Rapoport's avatar Mike Rapoport Committed by Jonathan Corbet

Documentation/sphinx: allow "functions" with no parameters

When kernel-doc:: specified in .rst document without explicit directives,
it outputs both comment and DOC: sections. If a DOC: section was explicitly
included in the same document it will be duplicated. For example, the
output generated for Documentation/core-api/idr.rst [1] has "IDA
description" in the "IDA usage" section and in the middle of the API
reference.

This patch enables using "functions" directive without parameters to output
all the documentation excluding DOC: sections.

[1] https://www.kernel.org/doc/html/v4.17/core-api/idr.htmlSigned-off-by: default avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Acked-by: default avatarMatthew Wilcox <willy@infradead.org>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent dad05139
...@@ -488,14 +488,19 @@ doc: *title* ...@@ -488,14 +488,19 @@ doc: *title*
.. kernel-doc:: drivers/gpu/drm/i915/intel_audio.c .. kernel-doc:: drivers/gpu/drm/i915/intel_audio.c
:doc: High Definition Audio over HDMI and Display Port :doc: High Definition Audio over HDMI and Display Port
functions: *function* *[...]* functions: *[ function ...]*
Include documentation for each *function* in *source*. Include documentation for each *function* in *source*.
If no *function* if specified, the documentaion for all functions
and types in the *source* will be included.
Example:: Examples::
.. kernel-doc:: lib/bitmap.c .. kernel-doc:: lib/bitmap.c
:functions: bitmap_parselist bitmap_parselist_user :functions: bitmap_parselist bitmap_parselist_user
.. kernel-doc:: lib/idr.c
:functions:
Without options, the kernel-doc directive includes all documentation comments Without options, the kernel-doc directive includes all documentation comments
from the source file. from the source file.
......
...@@ -47,7 +47,7 @@ class KernelDocDirective(Directive): ...@@ -47,7 +47,7 @@ class KernelDocDirective(Directive):
optional_arguments = 4 optional_arguments = 4
option_spec = { option_spec = {
'doc': directives.unchanged_required, 'doc': directives.unchanged_required,
'functions': directives.unchanged_required, 'functions': directives.unchanged,
'export': directives.unchanged, 'export': directives.unchanged,
'internal': directives.unchanged, 'internal': directives.unchanged,
} }
...@@ -75,8 +75,12 @@ class KernelDocDirective(Directive): ...@@ -75,8 +75,12 @@ class KernelDocDirective(Directive):
elif 'doc' in self.options: elif 'doc' in self.options:
cmd += ['-function', str(self.options.get('doc'))] cmd += ['-function', str(self.options.get('doc'))]
elif 'functions' in self.options: elif 'functions' in self.options:
for f in str(self.options.get('functions')).split(): functions = self.options.get('functions').split()
if functions:
for f in functions:
cmd += ['-function', f] cmd += ['-function', f]
else:
cmd += ['-no-doc-sections']
for pattern in export_file_patterns: for pattern in export_file_patterns:
for f in glob.glob(env.config.kerneldoc_srctree + '/' + pattern): for f in glob.glob(env.config.kerneldoc_srctree + '/' + pattern):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment