diff options
Diffstat (limited to 'gprofng/gp-display-html/gp-display-html.in')
-rw-r--r-- | gprofng/gp-display-html/gp-display-html.in | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/gprofng/gp-display-html/gp-display-html.in b/gprofng/gp-display-html/gp-display-html.in new file mode 100644 index 00000000000..f8fbc244c52 --- /dev/null +++ b/gprofng/gp-display-html/gp-display-html.in @@ -0,0 +1,256 @@ +#!/usr/bin/perl + +# Copyright (C) 2021 Free Software Foundation, Inc. +# Contributed by Oracle. +# +# This file is part of GNU Binutils. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +#------------------------------------------------------------------------------ +# gp-display-html, last updated July 2021 +# +# NOTE: This is a skeleton version. The real code will follow as an update. +#------------------------------------------------------------------------------ + +use strict; +use warnings; + +#------------------------------------------------------------------------------ +# Poor man's version of a boolean. +#------------------------------------------------------------------------------ +my $TRUE = 1; +my $FALSE = 0; + +#------------------------------------------------------------------------------- +# Define the driver command, tool name and version number. +#------------------------------------------------------------------------------- +my $driver_cmd = "gprofng display html"; +my $tool_name = "gp-display-html"; +my $binutils_version = "BINUTILS_VERSION"; +my $version_info = $tool_name . " GNU binutils version " . $binutils_version; + +#------------------------------------------------------------------------------ +# This is cosmetic, but helps with the scoping of variables. +#------------------------------------------------------------------------------ + + main (); + + exit (0); + +#------------------------------------------------------------------------------ +# THE SUBROUTINES +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# This is the driver part of the program. +#------------------------------------------------------------------------------ +sub +main +{ + my $subr_name = "main"; + my $ignore_value; + +#------------------------------------------------------------------------------ +# If no options are given, print the help info and exit. +#------------------------------------------------------------------------------ + $ignore_value = early_scan_specific_options(); + + $ignore_value = be_patient (); + + return (0); + +} #-- End of subroutine main + +sub +be_patient +{ + print "Functionality not implemented yet - please stay tuned for updates\n"; + +} #-- End of subroutine be_patient + +#------------------------------------------------------------------------------ +# Prints the version number and license information. +#------------------------------------------------------------------------------ +sub +print_version_info +{ + print "$version_info\n"; + print "Copyright (C) 2021 Free Software Foundation, Inc.\n"; + print "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\n"; + print "This is free software: you are free to change and redistribute it.\n"; + print "There is NO WARRANTY, to the extent permitted by law.\n"; + + return (0); + +} #-- End of subroutine print_version_info + +#------------------------------------------------------------------------------- +# Print the help overview +#------------------------------------------------------------------------------- +sub +print_help_info +{ + print + "Usage: $driver_cmd [OPTION(S)] EXPERIMENT(S)\n". + "\n". + "Process one or more experiments to generate a directory containing an index.html\n". + "file that can be used to browse the experiment data\n". + "\n". + "Options:\n". + "\n". + " --help print usage information and exit.\n". + " --version print the version number and exit.\n". + " --verbose {on|off} enable (on) or disable (off) verbose mode; the default is \"off\".\n". + "\n". + "\n". + " -o, --output <dir-name> use <dir-name> to store the results in; the default\n". + " name is ./display.<n>.html with <n> the first number\n". + " not in use; an existing directory is not overwritten.\n". + "\n". + " -O, --overwrite <dir-name> use <dir-name> to store the results in and overwrite\n". + " any existing directory with the same name; make sure\n". + " that umask is set to the correct access permissions.\n". + "\n". + " -fl, --func_limit <limit> impose a limit on the number of functions processed;\n". + " this is an integer number; set to 0 to process all\n". + " functions; the default value is 100.\n". + "\n". + " -ct, --calltree {on|off} enable or disable an html page with a call tree linked\n". + " from the bottom of the first page; default is off.\n". + "\n". + " -tp, --threshold_percentage <percentage> provide a percentage of metric accountability; the\n". + " inclusion of functions for each metric will take\n". + " place in sort order until the percentage has been\n". + " reached.\n". + "\n". + " -dm, --default_metrics {on|off} enable or disable automatic selection of metrics\n". + " and use a default set of metrics; the default is off.\n". + "\n". + " -im, --ignore_metrics <metric-list> ignore the metrics from <metric-list>.\n". + "\n". + " -db, --debug {on|off} enable/disable debug mode; print detailed information to assist with troubleshooting\n". + " or further development of this tool; default is off.\n". + "\n". + " -q, --quiet {on|off} disable/enable the display of warnings; default is off.\n". + "\n". + "Environment:\n". + "\n". + "The options can be set in a configuration file called .gp-display-html.rc. This\n". + "file needs to be either in the current directory, or in the home directory of the user.\n". + "The long name of the option without the leading dashes is supported. For example calltree\n". + "to enable or disable the call tree. Note that some options take a value. In case the same option\n". + "occurs multiple times in this file, only the last setting encountered is preserved.\n". + "\n". + "Documentation:\n". + "\n". + "A getting started guide for gprofng is maintained as a Texinfo manual. If the info and\n". + "gprofng programs are properly installed at your site, the command \"info gprofng\"\n". + "should give you access to this document.\n". + "\n". + "See also:\n". + "\n". + "gprofng(1), gp-archive(1), gp-collect-app(1), gp-display-src(1), gp-display-text(1)\n"; + + return (0); + +} #-- End of subroutine print_help_info + +#------------------------------------------------------------------------------ +# Scan the command line for specific options. +#------------------------------------------------------------------------------ +sub +early_scan_specific_options +{ + my $subr_name = "early_scan_specific_options"; + + my $ignore_value; + my $found_option; + my $option_has_value; + my $option_value; + + my $verbose_setting = $FALSE; + my $debug_setting = $FALSE; + my $quiet_setting = $FALSE; + + $option_has_value = $FALSE; + ($found_option, $option_value) = find_target_option (\@ARGV, $option_has_value, "--version"); + if ($found_option) + { + $ignore_value = print_version_info (); + exit(0); + } + $option_has_value = $FALSE; + ($found_option, $option_value) = find_target_option (\@ARGV, $option_has_value, "--help"); + if ($found_option) + { + $ignore_value = print_help_info (); + exit(0); + } + + return (0); + +} #-- End of subroutine early_scan_specific_options + +#------------------------------------------------------------------------------ +# Scan the command line to see if the specified option is present. +# +# Two types of options are supported: options without value (e.g. --help) or +# those that are set to "on" or "off". +#------------------------------------------------------------------------------ +sub +find_target_option +{ + my ($command_line_ref, $has_value, $target_option) = @_; + + my @command_line = @{ $command_line_ref }; + + my ($command_line_string) = join(" ", @command_line); + + my $option_value = "not set"; + my $found_option = $FALSE; + + if ($command_line_string =~ /\s*($target_option)\s*(on|off)*\s*/) + { + if ($has_value) + { +#------------------------------------------------------------------------------ +# We are looking for this kind if substring: "--verbose on" +#------------------------------------------------------------------------------ + if (defined($1) and defined($2)) + { + if ( ($2 eq "on") or ($2 eq "off") ) + { + $found_option = $TRUE; + $option_value = $2; + } + } + } + else + { +#------------------------------------------------------------------------------ +# We are looking for this kind if substring: "--help" +#------------------------------------------------------------------------------ + if (defined($1)) + { + $found_option = $TRUE; + } + } + } + + return($found_option, $option_value); + +} #-- End of subroutine find_target_option |