3 # Generated from autoheader.in; do not edit by hand.
5 eval 'case $# in 0) exec /bin/perl -S "$0";; *) exec /bin/perl -S "$0" "$@";; esac'
8 # autoheader -- create `config.h.in' from `configure.ac'
10 # Copyright (C) 1992, 1993, 1994, 1996, 1998, 1999, 2000, 2001, 2002,
11 # 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
13 # This program is free software; you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation; either version 2, or (at your option)
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
28 # Written by Roland McGrath.
29 # Rewritten in Perl by Akim Demaille.
33 my $datadir = $ENV{'autom4te_perllibdir'} || '/usr/share/autoconf';
34 unshift @INC, "$datadir";
36 # Override SHELL. On DJGPP SHELL may not be set to a shell
37 # that can handle redirection and quote arguments correctly,
38 # e.g.: COMMAND.COM. For DJGPP always use the shell that configure
40 $ENV{'SHELL'} = '/bin/sh' if ($^O
eq 'dos');
43 use Autom4te
::ChannelDefs
;
44 use Autom4te
::Channels
;
45 use Autom4te
::Configure_ac
;
46 use Autom4te
::FileUtils
;
47 use Autom4te
::General
;
51 # Using `do FILE', we need `local' vars.
52 use vars qw
($config_h %verbatim %symbol);
55 my $autom4te = $ENV{'AUTOM4TE'} || '/usr/bin/autom4te';
64 $help = "Usage: $0 [OPTION] ... [TEMPLATE-FILE]
66 Create a template file of C \`\#define\' statements for \`configure\' to
67 use. To this end, scan TEMPLATE-FILE, or \`configure.ac\' if present,
68 or else \`configure.in\'.
70 -h, --help print this help, then exit
71 -V, --version print version number, then exit
72 -v, --verbose verbosely report processing
73 -d, --debug don\'t remove temporary files
74 -f, --force consider all files obsolete
75 -W, --warnings=CATEGORY report the warnings falling in CATEGORY
77 " . Autom4te
::ChannelDefs
::usage
() . "
80 -B, --prepend-include=DIR prepend directory DIR to search path
81 -I, --include=DIR append directory DIR to search path
83 Report bugs to <bug-autoconf\@gnu.org>.
89 $version = "autoheader (GNU Autoconf) 2.61
90 Copyright (C) 2006 Free Software Foundation, Inc.
91 This is free software. You may redistribute copies of it under the terms of
92 the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
93 There is NO WARRANTY, to the extent permitted by law.
95 Written by Roland McGrath and Akim Demaille.
106 # Process any command line arguments.
112 getopt
('I|include=s' => \
@include,
113 'B|prepend-include=s' => \
@prepend_include,
114 'W|warnings=s' => \
&parse_warnings
);
118 my $configure_ac = require_configure_ac
;
119 push @ARGV, $configure_ac;
129 switch_warning
'obsolete';
133 my $config_h_top = find_file
("config.h.top?",
134 reverse (@prepend_include), @include);
135 my $config_h_bot = find_file
("config.h.bot?",
136 reverse (@prepend_include), @include);
137 my $acconfig_h = find_file
("acconfig.h?",
138 reverse (@prepend_include), @include);
139 if ($config_h_top || $config_h_bot || $acconfig_h)
142 Using auxiliary files such as \
`acconfig.h\', \`config
.h
.bot
\'
143 and \
`config.h.top\', to define templates for \`config
.h
.in\'
144 is deprecated
and discouraged
.
146 Using the third argument of \
`AC_DEFINE\' and
147 \`AC_DEFINE_UNQUOTED
\' allows one to define a template without
150 AC_DEFINE([NEED_FUNC_MAIN], 1,
151 [Define if a function \`main
\' is needed
.])
153 More sophisticated templates can also be produced
, see the
156 $msg =~ s/^ /WARNING: /gm;
157 msg
'obsolete', $msg;
161 my $autoconf = "'$autom4te' --language=autoconf ";
162 $autoconf .= join (' ', map { "--include='$_'" } @include);
163 $autoconf .= join (' ', map { "--prepend-include='$_'" } @prepend_include);
164 $autoconf .= ' --debug' if $debug;
165 $autoconf .= ' --force' if $force;
166 $autoconf .= ' --verbose' if $verbose;
168 # ----------------------- #
169 # Real work starts here. #
170 # ----------------------- #
172 # Source what the traces are trying to tell us.
173 verb
"$me: running $autoconf to trace from $ARGV[0]";
175 # If you change this list, update the
176 # `Autoheader-preselections' section of autom4te.in.
177 . ' --trace AC_CONFIG_HEADERS:\'$$config_h ||= \'"\'"\'$1\'"\'"\';\''
178 . ' --trace AH_OUTPUT:\'$$verbatim{\'"\'"\'$1\'"\'"\'} = \'"\'"\'$2\'"\'"\';\''
179 . ' --trace AC_DEFINE_TRACE_LITERAL:\'$$symbol{\'"\'"\'$1\'"\'"\'} = 1;\''
180 . " $ARGV[0] >$tmp/traces.pl");
182 local (%verbatim, %symbol);
183 debug
"$me: \`do'ing $tmp/traces.pl:\n" . `sed 's/^/| /' $tmp/traces.pl`;
185 warn "couldn't parse $tmp/traces.pl: $@" if $@
;
188 error
"error: AC_CONFIG_HEADERS not found in $ARGV[0]";
192 # We template only the first CONFIG_HEADER.
193 $config_h =~ s/ .*//;
194 # Support "outfile[:infile]", defaulting infile="outfile.in".
195 ($config_h, $config_h_in) = split (':', $config_h, 2);
196 $config_h_in ||= "$config_h.in";
198 # %SYMBOL might contain things like `F77_FUNC(name,NAME)', but we keep
199 # only the name of the macro.
200 %symbol = map { s/\(.*//; $_ => 1 } keys %symbol;
202 my $out = new Autom4te
::XFile
(">$tmp/config.hin");
204 # Don't write "do not edit" -- it will get copied into the
205 # config.h, which it's ok to edit.
206 print $out "/* $config_h_in. Generated from $ARGV[0] by autoheader. */\n";
211 my $in = new Autom4te
::XFile
($config_h_top);
212 while ($_ = $in->getline)
218 # Dump `acconfig.h', except for its bottom portion.
221 my $in = new Autom4te
::XFile
($acconfig_h);
222 while ($_ = $in->getline)
224 last if /\@BOTTOM\@/;
230 # Dump the templates from `configure.ac'.
231 foreach (sort keys %verbatim)
233 print $out "\n$verbatim{$_}\n";
236 # Dump bottom portion of `acconfig.h'.
239 my $in = new Autom4te
::XFile
($acconfig_h);
241 while ($_ = $in->getline)
243 print $out $_ if $dump;
244 $dump = 1 if /\@BOTTOM\@/;
251 my $in = new Autom4te
::XFile
($config_h_bot);
252 while ($_ = $in->getline)
260 # Check that all the symbols have a template.
262 my $in = new Autom4te
::XFile
("$tmp/config.hin");
263 my $suggest_ac_define = 1;
264 while ($_ = $in->getline)
266 my ($symbol) = /^\#\s*\w+\s+(\w+)/
268 delete $symbol{$symbol};
270 foreach (sort keys %symbol)
272 msg
'syntax', "warning: missing template: $_";
273 if ($suggest_ac_define)
275 msg
'syntax', "Use AC_DEFINE([$_], [], [Description])";
276 $suggest_ac_define = 0;
284 update_file
("$tmp/config.hin", "$config_h_in", $force);
286 ### Setup "GNU" style for perl-mode and cperl-mode.
288 ## perl-indent-level: 2
289 ## perl-continued-statement-offset: 2
290 ## perl-continued-brace-offset: 0
291 ## perl-brace-offset: 0
292 ## perl-brace-imaginary-offset: 0
293 ## perl-label-offset: -2
294 ## cperl-indent-level: 2
295 ## cperl-brace-offset: 0
296 ## cperl-continued-brace-offset: 0
297 ## cperl-label-offset: -2
298 ## cperl-extra-newline-before-brace: t
299 ## cperl-merge-trailing-else: nil
300 ## cperl-continued-statement-offset: 2