GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / toolchains / hndtools-arm-linux-2.6.36-uclibc-4.5.3 / share / autoconf / Autom4te / ChannelDefs.pm
bloba863dd39f8a3d829a224719e554dc3dfa1f76a6d
1 # Copyright (C) 2002, 2003, 2006, 2008, 2009 Free Software Foundation,
2 # Inc.
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package Autom4te::ChannelDefs;
19 use Autom4te::Channels;
21 =head1 NAME
23 Autom4te::ChannelDefs - channel definitions for Automake and helper functions
25 =head1 SYNOPSIS
27 use Autom4te::ChannelDefs;
29 print Autom4te::ChannelDefs::usage (), "\n";
30 prog_error ($MESSAGE, [%OPTIONS]);
31 error ($WHERE, $MESSAGE, [%OPTIONS]);
32 error ($MESSAGE);
33 fatal ($WHERE, $MESSAGE, [%OPTIONS]);
34 fatal ($MESSAGE);
35 verb ($MESSAGE, [%OPTIONS]);
36 switch_warning ($CATEGORY);
37 parse_WARNINGS ();
38 parse_warnings ($OPTION, $ARGUMENT);
39 Autom4te::ChannelDefs::set_strictness ($STRICTNESS_NAME);
41 =head1 DESCRIPTION
43 This package defines channels that can be used in Automake to
44 output diagnostics and other messages (via C<msg()>). It also defines
45 some helper function to enable or disable these channels, and some
46 shorthand function to output on specific channels.
48 =cut
50 use 5.005;
51 use strict;
52 use Exporter;
54 use vars qw (@ISA @EXPORT);
56 @ISA = qw (Exporter);
57 @EXPORT = qw (&prog_error &error &fatal &verb
58 &switch_warning &parse_WARNINGS &parse_warnings);
60 =head2 CHANNELS
62 The following channels can be used as the first argument of
63 C<Autom4te::Channel::msg>. For some of them we list a shorthand
64 function that makes the code more readable.
66 =over 4
68 =item C<fatal>
70 Fatal errors. Use C<&fatal> to send messages over this channel.
72 =item C<error>
74 Common errors. Use C<&error> to send messages over this channel.
76 =item C<error-gnu>
78 Errors related to GNU Standards.
80 =item C<error-gnu/warn>
82 Errors related to GNU Standards that should be warnings in "foreign" mode.
84 =item C<error-gnits>
86 Errors related to GNITS Standards (silent by default).
88 =item C<automake>
90 Internal errors. Use C<&prog_error> to send messages over this channel.
92 =item C<cross>
94 Constructs compromising the cross-compilation of the package.
96 =item C<gnu>
98 Warnings related to GNU Coding Standards.
100 =item C<obsolete>
102 Warnings about obsolete features (silent by default).
104 =item C<override>
106 Warnings about user redefinitions of Automake rules or
107 variables (silent by default).
109 =item C<portability>
111 Warnings about non-portable constructs.
113 =item C<syntax>
115 Warnings about weird syntax, unused variables, typos...
117 =item C<unsupported>
119 Warnings about unsupported (or mis-supported) features.
121 =item C<verb>
123 Messages output in C<--verbose> mode. Use C<&verb> to send such messages.
125 =item C<note>
127 Informative messages.
129 =back
131 =cut
133 # Initialize our list of error/warning channels.
134 # Do not forget to update &usage and the manual
135 # if you add or change a warning channel.
137 register_channel 'fatal', type => 'fatal', ordered => 0;
138 register_channel 'error', type => 'error';
139 register_channel 'error-gnu', type => 'error';
140 register_channel 'error-gnu/warn', type => 'error';
141 register_channel 'error-gnits', type => 'error', silent => 1;
142 register_channel 'automake', type => 'fatal', backtrace => 1,
143 header => ("####################\n" .
144 "## Internal Error ##\n" .
145 "####################\n"),
146 footer => "\nPlease contact <bug-automake\@gnu.org>.",
147 ordered => 0;
149 register_channel 'cross', type => 'warning', silent => 1;
150 register_channel 'gnu', type => 'warning';
151 register_channel 'obsolete', type => 'warning', silent => 1;
152 register_channel 'override', type => 'warning', silent => 1;
153 register_channel 'portability', type => 'warning', silent => 1;
154 register_channel 'syntax', type => 'warning';
155 register_channel 'unsupported', type => 'warning';
157 register_channel 'verb', type => 'debug', silent => 1, ordered => 0;
158 register_channel 'note', type => 'debug', silent => 0;
160 =head2 FUNCTIONS
162 =over 4
164 =item C<usage ()>
166 Return the warning category descriptions.
168 =cut
170 sub usage ()
172 return "Warning categories include:
173 `cross' cross compilation issues
174 `gnu' GNU coding standards (default in gnu and gnits modes)
175 `obsolete' obsolete features or constructions
176 `override' user redefinitions of Automake rules or variables
177 `portability' portability issues (default in gnu and gnits modes)
178 `syntax' dubious syntactic constructs (default)
179 `unsupported' unsupported or incomplete features (default)
180 `all' all the warnings
181 `no-CATEGORY' turn off warnings in CATEGORY
182 `none' turn off all the warnings
183 `error' treat warnings as errors";
186 =item C<prog_error ($MESSAGE, [%OPTIONS])>
188 Signal a programming error (on channel C<automake>),
189 display C<$MESSAGE>, and exit 1.
191 =cut
193 sub prog_error ($;%)
195 my ($msg, %opts) = @_;
196 msg 'automake', '', $msg, %opts;
199 =item C<error ($WHERE, $MESSAGE, [%OPTIONS])>
201 =item C<error ($MESSAGE)>
203 Uncategorized errors.
205 =cut
207 sub error ($;$%)
209 my ($where, $msg, %opts) = @_;
210 msg ('error', $where, $msg, %opts);
213 =item C<fatal ($WHERE, $MESSAGE, [%OPTIONS])>
215 =item C<fatal ($MESSAGE)>
217 Fatal errors.
219 =cut
221 sub fatal ($;$%)
223 my ($where, $msg, %opts) = @_;
224 msg ('fatal', $where, $msg, %opts);
227 =item C<verb ($MESSAGE, [%OPTIONS])>
229 C<--verbose> messages.
231 =cut
233 sub verb ($;%)
235 my ($msg, %opts) = @_;
236 msg 'verb', '', $msg, %opts;
239 =item C<switch_warning ($CATEGORY)>
241 If C<$CATEGORY> is C<mumble>, turn on channel C<mumble>.
242 If it is C<no-mumble>, turn C<mumble> off.
243 Else handle C<all> and C<none> for completeness.
245 =cut
247 sub switch_warning ($)
249 my ($cat) = @_;
250 my $has_no = 0;
252 if ($cat =~ /^no-(.*)$/)
254 $cat = $1;
255 $has_no = 1;
258 if ($cat eq 'all')
260 setup_channel_type 'warning', silent => $has_no;
262 elsif ($cat eq 'none')
264 setup_channel_type 'warning', silent => ! $has_no;
266 elsif ($cat eq 'error')
268 $warnings_are_errors = ! $has_no;
269 # Set exit code if Perl warns about something
270 # (like uninitialized variables).
271 $SIG{"__WARN__"} =
272 $has_no ? 'DEFAULT' : sub { print STDERR @_; $exit_code = 1; };
274 elsif (channel_type ($cat) eq 'warning')
276 setup_channel $cat, silent => $has_no;
278 else
280 return 1;
282 return 0;
285 =item C<parse_WARNINGS ()>
287 Parse the WARNINGS environment variable.
289 =cut
291 sub parse_WARNINGS ()
293 if (exists $ENV{'WARNINGS'})
295 # Ignore unknown categories. This is required because WARNINGS
296 # should be honored by many tools.
297 switch_warning $_ foreach (split (',', $ENV{'WARNINGS'}));
301 =item C<parse_warnings ($OPTION, @ARGUMENT)>
303 Parse the argument of C<--warning=CATEGORY> or C<-WCATEGORY>.
305 C<$OPTIONS> is C<"--warning"> or C<"-W">, C<@ARGUMENT> is a list of
306 C<CATEGORY>.
308 This can be used as an argument to C<Getopt>.
310 =cut
312 sub parse_warnings ($@)
314 my ($opt, @categories) = @_;
316 foreach my $cat (map { split ',' } @categories)
318 msg 'unsupported', "unknown warning category `$cat'"
319 if switch_warning $cat;
323 =item C<set_strictness ($STRICTNESS_NAME)>
325 Configure channels for strictness C<$STRICTNESS_NAME>.
327 =cut
329 sub set_strictness ($)
331 my ($name) = @_;
333 if ($name eq 'gnu')
335 setup_channel 'error-gnu', silent => 0;
336 setup_channel 'error-gnu/warn', silent => 0, type => 'error';
337 setup_channel 'error-gnits', silent => 1;
338 setup_channel 'portability', silent => 0;
339 setup_channel 'gnu', silent => 0;
341 elsif ($name eq 'gnits')
343 setup_channel 'error-gnu', silent => 0;
344 setup_channel 'error-gnu/warn', silent => 0, type => 'error';
345 setup_channel 'error-gnits', silent => 0;
346 setup_channel 'portability', silent => 0;
347 setup_channel 'gnu', silent => 0;
349 elsif ($name eq 'foreign')
351 setup_channel 'error-gnu', silent => 1;
352 setup_channel 'error-gnu/warn', silent => 0, type => 'warning';
353 setup_channel 'error-gnits', silent => 1;
354 setup_channel 'portability', silent => 1;
355 setup_channel 'gnu', silent => 1;
357 else
359 prog_error "level `$name' not recognized\n";
363 =back
365 =head1 SEE ALSO
367 L<Autom4te::Channels>
369 =head1 HISTORY
371 Written by Alexandre Duret-Lutz E<lt>F<adl@gnu.org>E<gt>.
373 =cut
375 ### Setup "GNU" style for perl-mode and cperl-mode.
376 ## Local Variables:
377 ## perl-indent-level: 2
378 ## perl-continued-statement-offset: 2
379 ## perl-continued-brace-offset: 0
380 ## perl-brace-offset: 0
381 ## perl-brace-imaginary-offset: 0
382 ## perl-label-offset: -2
383 ## cperl-indent-level: 2
384 ## cperl-brace-offset: 0
385 ## cperl-continued-brace-offset: 0
386 ## cperl-label-offset: -2
387 ## cperl-extra-newline-before-brace: t
388 ## cperl-merge-trailing-else: nil
389 ## cperl-continued-statement-offset: 2
390 ## End: