lkml.org 
[lkml]   [2020]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 05/80] scripts: kernel-doc: reimplement -nofunction argument
    Date
    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>
    ---
    scripts/kernel-doc | 44 +++++++++++++++++++++-----------------------
    1 file changed, 21 insertions(+), 23 deletions(-)

    diff --git a/scripts/kernel-doc b/scripts/kernel-doc
    index bdd2ebb4ac41..6a7996c96bbb 100755
    --- a/scripts/kernel-doc
    +++ b/scripts/kernel-doc
    @@ -66,9 +66,8 @@ Output selection (mutually exclusive):
    -function NAME Only output documentation for the given function(s)
    or DOC: section title(s). All other functions and DOC:
    sections are ignored. May be specified multiple times.
    - -nofunction NAME Do NOT output documentation for the given function(s);
    - only output documentation for the other functions and
    - DOC: sections. May be specified multiple times.
    + -nosymbol NAME Exclude the specified symbols from the output
    + documentation. May be specified multiple times.

    Output selection modifiers:
    -no-doc-sections Do not output DOC: sections.
    @@ -288,9 +287,8 @@ my $modulename = "Kernel API";
    use constant {
    OUTPUT_ALL => 0, # output all symbols and doc sections
    OUTPUT_INCLUDE => 1, # output only specified symbols
    - OUTPUT_EXCLUDE => 2, # output everything except specified symbols
    - OUTPUT_EXPORTED => 3, # output exported symbols
    - OUTPUT_INTERNAL => 4, # output non-exported symbols
    + OUTPUT_EXPORTED => 2, # output exported symbols
    + OUTPUT_INTERNAL => 3, # output non-exported symbols
    };
    my $output_selection = OUTPUT_ALL;
    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
    # could cause "use of undefined value" or other bugs.
    my ($function, %function_table, %parametertypes, $declaration_purpose);
    +my %nosymbol_table = ();
    my $declaration_start_line;
    my ($type, $declaration_name, $return_type);
    my ($newsection, $newcontents, $prototype, $brcount, %source_map);
    @@ -434,10 +433,9 @@ while ($ARGV[0] =~ m/^--?(.*)/) {
    $output_selection = OUTPUT_INCLUDE;
    $function = shift @ARGV;
    $function_table{$function} = 1;
    - } elsif ($cmd eq "nofunction") { # output all except specific functions
    - $output_selection = OUTPUT_EXCLUDE;
    - $function = shift @ARGV;
    - $function_table{$function} = 1;
    + } elsif ($cmd eq "nosymbol") { # Exclude specific symbols
    + my $symbol = shift @ARGV;
    + $nosymbol_table{$symbol} = 1;
    } elsif ($cmd eq "export") { # only exported symbols
    $output_selection = OUTPUT_EXPORTED;
    %function_table = ();
    @@ -570,11 +568,11 @@ sub dump_doc_section {
    return;
    }

    + return if (defined($nosymbol_table{$name}));
    +
    if (($output_selection == OUTPUT_ALL) ||
    - ($output_selection == OUTPUT_INCLUDE &&
    - defined($function_table{$name})) ||
    - ($output_selection == OUTPUT_EXCLUDE &&
    - !defined($function_table{$name})))
    + (($output_selection == OUTPUT_INCLUDE) &&
    + defined($function_table{$name})))
    {
    dump_section($file, $name, $contents);
    output_blockhead({'sectionlist' => \@sectionlist,
    @@ -800,6 +798,8 @@ sub output_blockhead_rst(%) {
    my ($parameter, $section);

    foreach $section (@{$args{'sectionlist'}}) {
    + next if (defined($nosymbol_table{$section}));
    +
    if ($output_selection != OUTPUT_INCLUDE) {
    print "**$section**\n\n";
    }
    @@ -1115,12 +1115,14 @@ sub output_declaration {
    my $name = shift;
    my $functype = shift;
    my $func = "output_${functype}_$output_mode";
    +
    + return if (defined($nosymbol_table{$name}));
    +
    if (($output_selection == OUTPUT_ALL) ||
    (($output_selection == OUTPUT_INCLUDE ||
    $output_selection == OUTPUT_EXPORTED) &&
    defined($function_table{$name})) ||
    - (($output_selection == OUTPUT_EXCLUDE ||
    - $output_selection == OUTPUT_INTERNAL) &&
    + ($output_selection == OUTPUT_INTERNAL &&
    !($functype eq "function" && defined($function_table{$name}))))
    {
    &$func(@_);
    @@ -1301,6 +1303,8 @@ sub show_warnings($$) {
    my $functype = shift;
    my $name = shift;

    + return 0 if (defined($nosymbol_table{$name}));
    +
    return 1 if ($output_selection == OUTPUT_ALL);

    if ($output_selection == OUTPUT_EXPORTED) {
    @@ -1324,13 +1328,6 @@ sub show_warnings($$) {
    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()");
    }

    @@ -1952,6 +1949,7 @@ sub process_export_file($) {

    while (<IN>) {
    if (/$export_symbol/) {
    + next if (defined($nosymbol_table{$2}));
    $function_table{$2} = 1;
    }
    }
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-10-13 13:55    [W:2.716 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site