⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channeldefs.pm

📁 autoconf是一个产生可以自动配置源代码包
💻 PM
字号:
# Copyright (C) 2002, 2003 Free Software Foundation, Inc.# 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 2, 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA# 02110-1301, USA.package Autom4te::ChannelDefs;use Autom4te::Channels;=head1 NAMEAutom4te::ChannelDefs - channel definitions for Automake and helper functions=head1 SYNOPSIS  use Autom4te::ChannelDefs;  print Autom4te::ChannelDefs::usage (), "\n";  prog_error ($MESSAGE, [%OPTIONS]);  error ($WHERE, $MESSAGE, [%OPTIONS]);  error ($MESSAGE);  fatal ($WHERE, $MESSAGE, [%OPTIONS]);  fatal ($MESSAGE);  verb ($MESSAGE, [%OPTIONS]);  switch_warning ($CATEGORY);  parse_WARNINGS ();  parse_warnings ($OPTION, $ARGUMENT);  Autom4te::ChannelDefs::set_strictness ($STRICTNESS_NAME);=head1 DESCRIPTIONThis packages defines channels that can be used in Automake tooutput diagnostics and other messages (via C<msg()>).  It also definessome helper function to enable or disable these channels, and someshorthand function to output on specific channels.=cutuse 5.005;use strict;use Exporter;use vars qw (@ISA @EXPORT);@ISA = qw (Exporter);@EXPORT = qw (&prog_error &error &fatal &verb	      &switch_warning &parse_WARNINGS &parse_warnings);=head2 CHANNELSThe following channels can be used as the first argument ofC<Autom4te::Channel::msg>.  For some of them we list a shorthandfunction that makes the code more readable.=over 4=item C<fatal>Fatal errors.  Use C<&fatal> to send messages over this channel.=item C<error>Common errors.   Use C<&error> to send messages over this channel.=item C<error-gnu>Errors related to GNU Standards.=item C<error-gnu/warn>Errors related to GNU Standards that should be warnings in "foreign" mode.=item C<error-gnits>Errors related to GNITS Standards (silent by default).=item C<automake>Internal errors.  Use C<&prog_error> to send messages over this channel.=item C<cross>Constructs compromising the cross-compilation of the package.=item C<gnu>Warnings related to GNU Coding Standards.=item C<obsolete>Warnings about obsolete features (silent by default).=item C<override>Warnings about user redefinitions of Automake rules orvariables (silent by default).=item C<portability>Warnings about non-portable constructs.=item C<syntax>Warnings about weird syntax, unused variables, typos...=item C<unsupported>Warnings about unsupported (or mis-supported) features.=item C<verb>Messages output in C<--verbose> mode.  Use C<&verb> to send such messages.=item C<note>Informative messages.=back=cut# Initialize our list of error/warning channels.# Do not forget to update &usage and the manual# if you add or change a warning channel.register_channel 'fatal', type => 'fatal';register_channel 'error', type => 'error';register_channel 'error-gnu', type => 'error';register_channel 'error-gnu/warn', type => 'error';register_channel 'error-gnits', type => 'error', silent => 1;register_channel 'automake', type => 'fatal', backtrace => 1,  header => ("####################\n" .	     "## Internal Error ##\n" .	     "####################\n"),  footer => "\nPlease contact <bug-automake\@gnu.org>.";register_channel 'cross', type => 'warning', silent => 1;register_channel 'gnu', type => 'warning';register_channel 'obsolete', type => 'warning', silent => 1;register_channel 'override', type => 'warning', silent => 1;register_channel 'portability', type => 'warning', silent => 1;register_channel 'syntax', type => 'warning';register_channel 'unsupported', type => 'warning';register_channel 'verb', type => 'debug', silent => 1;register_channel 'note', type => 'debug', silent => 0;=head2 FUNCTIONS=over 4=item C<usage ()>Return the warning category descriptions.=cutsub usage (){  return "Warning categories include:  `cross'         cross compilation issues  `gnu'           GNU coding standards (default in gnu and gnits modes)  `obsolete'      obsolete features or constructions  `override'      user redefinitions of Automake rules or variables  `portability'   portability issues  `syntax'        dubious syntactic constructs (default)  `unsupported'   unsupported or incomplete features (default)  `all'           all the warnings  `no-CATEGORY'   turn off warnings in CATEGORY  `none'          turn off all the warnings  `error'         treat warnings as errors";}=item C<prog_error ($MESSAGE, [%OPTIONS])>Signal a programming error (on channel C<automake>),display C<$MESSAGE>, and exit 1.=cutsub prog_error ($;%){  my ($msg, %opts) = @_;  msg 'automake', '', $msg, %opts;}=item C<error ($WHERE, $MESSAGE, [%OPTIONS])>=item C<error ($MESSAGE)>Uncategorized errors.=cutsub error ($;$%){  my ($where, $msg, %opts) = @_;  msg ('error', $where, $msg, %opts);}=item C<fatal ($WHERE, $MESSAGE, [%OPTIONS])>=item C<fatal ($MESSAGE)>Fatal errors.=cutsub fatal ($;$%){  my ($where, $msg, %opts) = @_;  msg ('fatal', $where, $msg, %opts);}=item C<verb ($MESSAGE, [%OPTIONS])>C<--verbose> messages.=cutsub verb ($;%){  my ($msg, %opts) = @_;  msg 'verb', '', $msg, %opts;}=item C<switch_warning ($CATEGORY)>If C<$CATEGORY> is C<mumble>, turn on channel C<mumble>.If it is C<no-mumble>, turn C<mumble> off.Else handle C<all> and C<none> for completeness.=cutsub switch_warning ($){  my ($cat) = @_;  my $has_no = 0;  if ($cat =~ /^no-(.*)$/)    {      $cat = $1;      $has_no = 1;    }  if ($cat eq 'all')    {      setup_channel_type 'warning', silent => $has_no;    }  elsif ($cat eq 'none')    {      setup_channel_type 'warning', silent => ! $has_no;    }  elsif ($cat eq 'error')    {      $warnings_are_errors = ! $has_no;      # Set exit code if Perl warns about something      # (like uninitialized variables).      $SIG{"__WARN__"} =	$has_no ? 'DEFAULT' : sub { print STDERR @_; $exit_code = 1; };    }  elsif (channel_type ($cat) eq 'warning')    {      setup_channel $cat, silent => $has_no;    }  else    {      return 1;    }  return 0;}=item C<parse_WARNINGS ()>Parse the WARNINGS environment variable.=cutsub parse_WARNINGS (){  if (exists $ENV{'WARNINGS'})    {      # Ignore unknown categories.  This is required because WARNINGS      # should be honored by many tools.      switch_warning $_ foreach (split (',', $ENV{'WARNINGS'}));    }}=item C<parse_warnings ($OPTION, @ARGUMENT)>Parse the argument of C<--warning=CATEGORY> or C<-WCATEGORY>.C<$OPTIONS> is C<"--warning"> or C<"-W">, C<@ARGUMENT> is a list ofC<CATEGORY>.This can be used as a argument to C<Getopt>.=cutsub parse_warnings ($@){  my ($opt, @categories) = @_;  foreach my $cat (map { split ',' } @categories)    {      msg 'unsupported', "unknown warning category `$cat'"	if switch_warning $cat;    }}=item C<set_strictness ($STRICTNESS_NAME)>Configure channels for strictness C<$STRICTNESS_NAME>.=cutsub set_strictness ($){  my ($name) = @_;  # FIXME: 'portability' warnings are currently disabled by default.  # Eventually we want to turn them on in GNU and GNITS modes, but  # we don't do this yet in Automake 1.7 to help the 1.6/1.7 transition.  #  # Indeed there would be only two ways to get rid of these new warnings:  #  1. adjusting Makefile.am  #     This is not always easy (or wanted).  Consider %-rules or  #     $(function args) variables.  #  2. using -Wno-portability  #     This means there is no way to have the same Makefile.am  #     working both with Automake 1.6 and 1.7 (since 1.6 does not  #     understand -Wno-portability).  #  # In Automake 1.8 (or whatever it is called) we can turn these  # warnings on, since -Wno-portability will not be an issue for  # the 1.7/1.8 transition.  if ($name eq 'gnu')    {      setup_channel 'error-gnu', silent => 0;      setup_channel 'error-gnu/warn', silent => 0, type => 'error';      setup_channel 'error-gnits', silent => 1;      # setup_channel 'portability', silent => 0;      setup_channel 'gnu', silent => 0;    }  elsif ($name eq 'gnits')    {      setup_channel 'error-gnu', silent => 0;      setup_channel 'error-gnu/warn', silent => 0, type => 'error';      setup_channel 'error-gnits', silent => 0;      # setup_channel 'portability', silent => 0;      setup_channel 'gnu', silent => 0;    }  elsif ($name eq 'foreign')    {      setup_channel 'error-gnu', silent => 1;      setup_channel 'error-gnu/warn', silent => 0, type => 'warning';      setup_channel 'error-gnits', silent => 1;      # setup_channel 'portability', silent => 1;      setup_channel 'gnu', silent => 1;    }  else    {      prog_error "level `$name' not recognized\n";    }}=back=head1 SEE ALSOL<Autom4te::Channels>=head1 HISTORYWritten by Alexandre Duret-Lutz E<lt>F<adl@gnu.org>E<gt>.=cut### Setup "GNU" style for perl-mode and cperl-mode.## Local Variables:## perl-indent-level: 2## perl-continued-statement-offset: 2## perl-continued-brace-offset: 0## perl-brace-offset: 0## perl-brace-imaginary-offset: 0## perl-label-offset: -2## cperl-indent-level: 2## cperl-brace-offset: 0## cperl-continued-brace-offset: 0## cperl-label-offset: -2## cperl-extra-newline-before-brace: t## cperl-merge-trailing-else: nil## cperl-continued-statement-offset: 2## End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -