scripts: kernel-doc: reimplement -nofunction argument
Right now, the build system doesn't use -nofunction, as it is pretty much useless, because it doesn't consider the other output modes (extern, internal), working only with all. Also, it is limited to exclude functions. Re-implement it in order to allow excluding any symbols from the document output, no matter what mode is used. The parameter was also renamed to "-nosymbol", as it express better its meaning. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20201117165312.118257-20-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5abfaa6a7f
commit
78c8c92c5d
@ -66,9 +66,8 @@ Output selection (mutually exclusive):
|
|||||||
-function NAME Only output documentation for the given function(s)
|
-function NAME Only output documentation for the given function(s)
|
||||||
or DOC: section title(s). All other functions and DOC:
|
or DOC: section title(s). All other functions and DOC:
|
||||||
sections are ignored. May be specified multiple times.
|
sections are ignored. May be specified multiple times.
|
||||||
-nofunction NAME Do NOT output documentation for the given function(s);
|
-nosymbol NAME Exclude the specified symbols from the output
|
||||||
only output documentation for the other functions and
|
documentation. May be specified multiple times.
|
||||||
DOC: sections. May be specified multiple times.
|
|
||||||
|
|
||||||
Output selection modifiers:
|
Output selection modifiers:
|
||||||
-no-doc-sections Do not output DOC: sections.
|
-no-doc-sections Do not output DOC: sections.
|
||||||
@ -288,9 +287,8 @@ my $modulename = "Kernel API";
|
|||||||
use constant {
|
use constant {
|
||||||
OUTPUT_ALL => 0, # output all symbols and doc sections
|
OUTPUT_ALL => 0, # output all symbols and doc sections
|
||||||
OUTPUT_INCLUDE => 1, # output only specified symbols
|
OUTPUT_INCLUDE => 1, # output only specified symbols
|
||||||
OUTPUT_EXCLUDE => 2, # output everything except specified symbols
|
OUTPUT_EXPORTED => 2, # output exported symbols
|
||||||
OUTPUT_EXPORTED => 3, # output exported symbols
|
OUTPUT_INTERNAL => 3, # output non-exported symbols
|
||||||
OUTPUT_INTERNAL => 4, # output non-exported symbols
|
|
||||||
};
|
};
|
||||||
my $output_selection = OUTPUT_ALL;
|
my $output_selection = OUTPUT_ALL;
|
||||||
my $show_not_found = 0; # No longer used
|
my $show_not_found = 0; # No longer used
|
||||||
@ -315,6 +313,7 @@ my $man_date = ('January', 'February', 'March', 'April', 'May', 'June',
|
|||||||
# CAVEAT EMPTOR! Some of the others I localised may not want to be, which
|
# CAVEAT EMPTOR! Some of the others I localised may not want to be, which
|
||||||
# could cause "use of undefined value" or other bugs.
|
# could cause "use of undefined value" or other bugs.
|
||||||
my ($function, %function_table, %parametertypes, $declaration_purpose);
|
my ($function, %function_table, %parametertypes, $declaration_purpose);
|
||||||
|
my %nosymbol_table = ();
|
||||||
my $declaration_start_line;
|
my $declaration_start_line;
|
||||||
my ($type, $declaration_name, $return_type);
|
my ($type, $declaration_name, $return_type);
|
||||||
my ($newsection, $newcontents, $prototype, $brcount, %source_map);
|
my ($newsection, $newcontents, $prototype, $brcount, %source_map);
|
||||||
@ -434,10 +433,9 @@ while ($ARGV[0] =~ m/^--?(.*)/) {
|
|||||||
$output_selection = OUTPUT_INCLUDE;
|
$output_selection = OUTPUT_INCLUDE;
|
||||||
$function = shift @ARGV;
|
$function = shift @ARGV;
|
||||||
$function_table{$function} = 1;
|
$function_table{$function} = 1;
|
||||||
} elsif ($cmd eq "nofunction") { # output all except specific functions
|
} elsif ($cmd eq "nosymbol") { # Exclude specific symbols
|
||||||
$output_selection = OUTPUT_EXCLUDE;
|
my $symbol = shift @ARGV;
|
||||||
$function = shift @ARGV;
|
$nosymbol_table{$symbol} = 1;
|
||||||
$function_table{$function} = 1;
|
|
||||||
} elsif ($cmd eq "export") { # only exported symbols
|
} elsif ($cmd eq "export") { # only exported symbols
|
||||||
$output_selection = OUTPUT_EXPORTED;
|
$output_selection = OUTPUT_EXPORTED;
|
||||||
%function_table = ();
|
%function_table = ();
|
||||||
@ -570,11 +568,11 @@ sub dump_doc_section {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return if (defined($nosymbol_table{$name}));
|
||||||
|
|
||||||
if (($output_selection == OUTPUT_ALL) ||
|
if (($output_selection == OUTPUT_ALL) ||
|
||||||
($output_selection == OUTPUT_INCLUDE &&
|
(($output_selection == OUTPUT_INCLUDE) &&
|
||||||
defined($function_table{$name})) ||
|
defined($function_table{$name})))
|
||||||
($output_selection == OUTPUT_EXCLUDE &&
|
|
||||||
!defined($function_table{$name})))
|
|
||||||
{
|
{
|
||||||
dump_section($file, $name, $contents);
|
dump_section($file, $name, $contents);
|
||||||
output_blockhead({'sectionlist' => \@sectionlist,
|
output_blockhead({'sectionlist' => \@sectionlist,
|
||||||
@ -800,6 +798,8 @@ sub output_blockhead_rst(%) {
|
|||||||
my ($parameter, $section);
|
my ($parameter, $section);
|
||||||
|
|
||||||
foreach $section (@{$args{'sectionlist'}}) {
|
foreach $section (@{$args{'sectionlist'}}) {
|
||||||
|
next if (defined($nosymbol_table{$section}));
|
||||||
|
|
||||||
if ($output_selection != OUTPUT_INCLUDE) {
|
if ($output_selection != OUTPUT_INCLUDE) {
|
||||||
print "**$section**\n\n";
|
print "**$section**\n\n";
|
||||||
}
|
}
|
||||||
@ -1115,12 +1115,14 @@ sub output_declaration {
|
|||||||
my $name = shift;
|
my $name = shift;
|
||||||
my $functype = shift;
|
my $functype = shift;
|
||||||
my $func = "output_${functype}_$output_mode";
|
my $func = "output_${functype}_$output_mode";
|
||||||
|
|
||||||
|
return if (defined($nosymbol_table{$name}));
|
||||||
|
|
||||||
if (($output_selection == OUTPUT_ALL) ||
|
if (($output_selection == OUTPUT_ALL) ||
|
||||||
(($output_selection == OUTPUT_INCLUDE ||
|
(($output_selection == OUTPUT_INCLUDE ||
|
||||||
$output_selection == OUTPUT_EXPORTED) &&
|
$output_selection == OUTPUT_EXPORTED) &&
|
||||||
defined($function_table{$name})) ||
|
defined($function_table{$name})) ||
|
||||||
(($output_selection == OUTPUT_EXCLUDE ||
|
($output_selection == OUTPUT_INTERNAL &&
|
||||||
$output_selection == OUTPUT_INTERNAL) &&
|
|
||||||
!($functype eq "function" && defined($function_table{$name}))))
|
!($functype eq "function" && defined($function_table{$name}))))
|
||||||
{
|
{
|
||||||
&$func(@_);
|
&$func(@_);
|
||||||
@ -1301,6 +1303,8 @@ sub show_warnings($$) {
|
|||||||
my $functype = shift;
|
my $functype = shift;
|
||||||
my $name = shift;
|
my $name = shift;
|
||||||
|
|
||||||
|
return 0 if (defined($nosymbol_table{$name}));
|
||||||
|
|
||||||
return 1 if ($output_selection == OUTPUT_ALL);
|
return 1 if ($output_selection == OUTPUT_ALL);
|
||||||
|
|
||||||
if ($output_selection == OUTPUT_EXPORTED) {
|
if ($output_selection == OUTPUT_EXPORTED) {
|
||||||
@ -1324,13 +1328,6 @@ sub show_warnings($$) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($output_selection == OUTPUT_EXCLUDE) {
|
|
||||||
if (!defined($function_table{$name})) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
die("Please add the new output type at show_warnings()");
|
die("Please add the new output type at show_warnings()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1952,6 +1949,7 @@ sub process_export_file($) {
|
|||||||
|
|
||||||
while (<IN>) {
|
while (<IN>) {
|
||||||
if (/$export_symbol/) {
|
if (/$export_symbol/) {
|
||||||
|
next if (defined($nosymbol_table{$2}));
|
||||||
$function_table{$2} = 1;
|
$function_table{$2} = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user