Commit eab795dd authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

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: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent dbe8ba00
...@@ -66,9 +66,8 @@ Output selection (mutually exclusive): ...@@ -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"; ...@@ -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', ...@@ -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/^--?(.*)/) { ...@@ -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 { ...@@ -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(%) { ...@@ -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 { ...@@ -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($$) { ...@@ -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($$) { ...@@ -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($) { ...@@ -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;
} }
} }
......
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