@c ----------------------------------------------------------------------------
@c This is the Texinfo source file for the gp-display-html man page.
@c
@c Author: Ruud van der Pas
@c ----------------------------------------------------------------------------
@ifset man
\input texinfo @c -*-texinfo-*-
@setfilename gp-display-html
@settitle Generate an HTML based directory structure to browse the profiles
@include gp-macros.texi
@end ifset

@c ----------------------------------------------------------------------------
@c This is from the man-pages(7) man page
@c
@c "The list below shows conventional or suggested sections.  Most manual pages
@c  should include at least the highlighted sections.  Arrange a new manual
@c  page so that sections are placed in the order shown in the list."
@c
@c              NAME
@c              SYNOPSIS
@c              CONFIGURATION    [Normally only in Section 4]
@c              DESCRIPTION
@c              OPTIONS          [Normally only in Sections 1, 8]
@c              EXIT STATUS      [Normally only in Sections 1, 8]
@c              RETURN VALUE     [Normally only in Sections 2, 3]
@c              ERRORS           [Typically only in Sections 2, 3]
@c              ENVIRONMENT
@c              FILES
@c              VERSIONS         [Normally only in Sections 2, 3]
@c              ATTRIBUTES       [Normally only in Sections 2, 3]
@c              CONFORMING TO
@c              NOTES
@c              BUGS
@c              EXAMPLES
@c              AUTHORS          [Discouraged]
@c              REPORTING BUGS   [Not used in man-pages]
@c              COPYRIGHT        [Not used in man-pages]
@c              SEE ALSO
@c
@c This is what the texi2pod.pl tool recognizes:
@c
@c for $sect (qw(NAME SYNOPSIS TARGET DESCRIPTION OPTIONS ENVIRONMENT FILES
@c               BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
@c
@c What is interesting is that it places "SEE ALSO" before "COPYRIGHT", which
@c makes sense and adhered to for the other formats.
@c ----------------------------------------------------------------------------

@c ----------------------------------------------------------------------------
@c NAME section
@c ----------------------------------------------------------------------------

@ManPageStart{NAME}
@c man begin NAME

gp-display-html - Generate an HTML based directory structure to browse the
profiles

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SYNOPSIS section
@c ----------------------------------------------------------------------------

@ManPageStart{SYNOPSIS}
@c man begin SYNOPSIS

@command{gprofng display html} [@var{option(s)}] @var{experiment(s)}

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c DESCRIPTION section
@c ----------------------------------------------------------------------------

@ManPageStart{DESCRIPTION}
@c man begin DESCRIPTION

Process one or more experiments to generate a directory containing the
@file{index.html} file that may be used to browse the experiment data.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c OPTIONS section
@c ----------------------------------------------------------------------------

@ManPageStart{OPTIONS}
@c man begin OPTIONS

@table @gcctabopt

@item --version
@ifclear man
@IndexSubentry{Options, @code{--version}}
@end ifclear

Print the version number and exit.

@item --help
@ifclear man
@IndexSubentry{Options, @code{--help}}
@end ifclear

Print usage information and exit.

@item --verbose
@ifclear man
@IndexSubentry{Options, @code{--verbose}}
@end ifclear

Enable verbose mode to show diagnostic messages about the processing of the
data.  By default verbose mode is disabled.

@item -d [@var{db-vol-size}], --debug[=@var{db-vol-size}]
@ifclear man
@IndexSubentry{Options, @code{-d}}
@IndexSubentry{Options, @code{--debug}}
@end ifclear

Control the printing of run time debug information to assist with the
troubleshooting, or further development of this tool.

The @var{db-vol-size} parameter controls the output volume and is one from
the list @samp{s}, @samp{S}, @samp{m}, @samp{M}, @samp{l}, @samp{L}, @samp{xl},
or @samp{XL}.  If @var{db-vol-size} is not set, a modest amount of information
is printed.  This is equivalent to select @samp{s}, or @samp{S}.  The volume
of data goes up as the size increases.  Note that currently @samp{l/L} is
equivalent to @samp{xl/XL}, but this is expected to change in future updates.
By default debug mode is disabled.

@item --highlight-percentage=@var{value}
@ifclear man
@IndexSubentry{Options, @code{--highlight-percentage}}
@end ifclear

Set a percentage value in the interval [0,100] to select and color code source
lines, as well as instructions, that are within this percentage of the maximum
metric value(s).  The default is 90 (%).  A value of zero disables this
feature.

@item -o @var{dirname}, --output=@var{dirname}
@ifclear man
@IndexSubentry{Options, @code{-o}}
@IndexSubentry{Options, @code{--output}}
@end ifclear

Use @var{dirname} as the directory name to store the results in.  In
absence of this option, the default name is @samp{display.<n>.html}.
This directory is created in the current directory.
The number @var{<n>} is the first positive integer number not in use in
this naming scheme.  An existing directory with the same name is not
overwritten.
In case the directory exists already, an error message is printed and
the tool terminates.

@item -O @var{dirname}, --overwrite=@var{dirname}
@ifclear man
@IndexSubentry{Options, @code{-O}}
@IndexSubentry{Options, @code{--overwrite}}
@end ifclear

Use @var{dirname} as the directory name to store the results in.  In
absence of this option, the default name is @samp{display.<n>.html}.
This directory is created in the current directory.
The number @var{<n>} is the first positive integer number not in use in
this naming scheme.  An existing directory with the same name is silently
overwritten.

@item -q,  --quiet
@ifclear man
@IndexSubentry{Options, @code{-q}}
@IndexSubentry{Options, @code{--quiet}}
@end ifclear

Disable the display of all warning, debug, verbose and any other messages.
If enabled, the settings for verbose and debug are accepted, but ignored.
With this option, there is no screen output, other than errors.  By default
quiet mode is disabled.

@item --nowarnings
@ifclear man
@IndexSubentry{Options, @code{--nowarnings}}
@end ifclear

Disable the printing of warning messages on stdout.  By default warning
messages are printed.

@end table

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c NOTES section
@c ----------------------------------------------------------------------------

@ManPageStart{NOTES}
@c man begin NOTES

@itemize @minus

@item
The options and values are case sensitive.

@item
In this release, the option syntax has changed to be more compliant with other
tools and commands.

The options that used to have an @samp{on} or @samp{off} value only, now act
as a switch.  The option negates the default setting.  For example, by
default, verbose mode is disabled.  It is enabled by using the
@samp{--verbose} option.

The long options, those starting with @code{--}, that require a value, expect
the @code{=} sign between the option and the value.

While the previous syntax and choices are accepted still, we strongly
recommend to change the usage of the options according to the new syntax
and values.  At some point, these legacy settings may no longer be accepted.

To assist with the transition, a warning message is shown if the legacy
syntax, or value, or both, are used.

@item
The @samp{-hp} option is still accepted, but it will be deprecated in a
future release.  Use the @samp{--highlight-percentage} option instead.

@item
When setting a directory name for the HTML files to be stored in, make sure
that umask is set to the correct access permissions.

@item
Regardless of the setting for the warning messages, if there are warnings, they
are accessible through the main @file{index.html} page.

@item
The tool tries to accumulate as many warnings and errors as possible, before
taking action.  In this way, it is easier to address multiple issues at
once.  As a result of this approach, it may be that the messages do not show
immediately.  In particular, warnings are shown towards the end of the
execution, but one or more errors will terminate execution before the
processing begins.

@end itemize

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SEEALSO section
@c ----------------------------------------------------------------------------

@ManPageStart{SEE ALSO}
@c man begin SEEALSO

gprofng(1),
gp-archive(1),
gp-collect-app(1),
gp-display-gui(1),
gp-display-src(1),
gp-display-text(1)

@iftex
@vspace{1}
@end iftex

The user guide for gprofng is maintained as a Texinfo manual.  If the
@command{info} and @command{gprofng} programs are correctly installed, the
command @command{info gprofng} should give access to this document.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c COPYRIGHT section
@c ----------------------------------------------------------------------------

@ManPageStart{COPYRIGHT}
@c man begin COPYRIGHT

Copyright @copyright{} 2022-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled ``GNU Free Documentation License''.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c If this text is used for a man page, exit.  Otherwise we need to continue.
@c ----------------------------------------------------------------------------

@ifset man
@bye
@end ifset
