* bin/autom4te.in (&parse_args): Implement `frozen files are

optional are the sum of the previous files on the command line'.
Also, pass `--reload-state=' on them, so...
(handle_m4): don't.
* lib/autom4te.in (Autotest, Autoconf): Rely on M4sh.
(M4sh): Rely on M4sugar.
(Autotest, M4sh, M4sugar): Use frozen files.
This commit is contained in:
Akim Demaille 2002-02-05 08:11:32 +00:00
parent ae45e9a242
commit 542109e14f
4 changed files with 65 additions and 33 deletions

View File

@ -1,3 +1,13 @@
2002-02-05 Akim Demaille <akim@epita.fr>
* bin/autom4te.in (&parse_args): Implement `frozen files are
optional are the sum of the previous files on the command line'.
Also, pass `--reload-state=' on them, so...
(handle_m4): don't.
* lib/autom4te.in (Autotest, Autoconf): Rely on M4sh.
(M4sh): Rely on M4sugar.
(Autotest, M4sh, M4sugar): Use frozen files.
2002-01-31 Akim Demaille <akim@epita.fr>
* lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Accept $4.

View File

@ -6,7 +6,7 @@ eval 'exec @PERL@ -S $0 ${1+"$@"}'
if 0;
# autom4te - Wrapper around M4 libraries.
# Copyright 2001 Free Software Foundation, Inc.
# Copyright 2001, 2002 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
@ -346,7 +346,12 @@ Usage: $0 [OPTION] ... [FILES]
Run GNU M4 on the FILES, avoiding useless runs. If tracing, the output
consists of the traces only, otherwise output the expansion of the FILES.
The first of the FILES may be an M4 frozen file, but then must end in \`.m4f\'.
If some of the FILES are named \`FILE.m4f\' they are considered to be M4
frozen files of all the previous files (which are therefore not loaded).
If \`FILE.m4f\' is not found, then \`FILE.m4\' will be used, together with
all the previous files.
Some files may be optional, i.e., will only be processed if found in the
include path, but then must end in \`.m4?\'; the question mark is not part of
the actual file name.
@ -396,7 +401,7 @@ $version = <<"EOF";
autom4te (@PACKAGE_NAME@) @VERSION@
Written by Akim Demaille.
Copyright 2001 Free Software Foundation, Inc.
Copyright 2001, 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
EOF
@ -471,8 +476,6 @@ sub parse_args ()
}
} while @language;
debug "arguments: @ARGV\n";
# Process the arguments for real this time.
my @trace;
getopt
@ -521,18 +524,38 @@ Try `$me --help' for more information.\n"
map { $m4_builtin_alternate_name{$_} }
grep { exists $m4_builtin_alternate_name{$_} } @preselect);
# Only the first file can be frozen, but M4 doesn't complain if this
# constraint is not honored.
die "$me: the first file only can be frozen\n"
if grep { /\.m4f/ } @ARGV[1 .. $#ARGV];
$ARGV[0] =~ s/\.m4f$/.m4/
if $melt;
# If we find frozen files, then all the files before it are
# discarded: the frozen file is supposed to include them all.
#
# We don't want to depend upon m4's --include to find the top level
# files. Try to get a canonical name, as it's part of the key for
# caching. And some files are optional.
@ARGV = grep { defined $_ } map { find_file ($_, @include) } @ARGV;
# files, so we use `find_file' here. Try to get a canonical name,
# as it's part of the key for caching. And some files are optional
# (also handled by `find_file').
my @argv;
foreach (@ARGV)
{
if (/\.m4f$/)
{
# Frozen files are optional => pass a `?' to `find_file'.
my $file = find_file ("$_?", @include);
if (!$melt && $file)
{
@argv = ("--reload-state=$file");
}
else
{
s/\.m4f$/.m4/;
push @argv, find_file ($_, @include);
}
}
else
{
my $file = find_file ($_, @include);
push @argv, $file
if $file;
}
}
@ARGV = @argv;
}
@ -543,15 +566,6 @@ sub handle_m4 ($@)
{
my ($req, @macro) = @_;
my $files;
foreach (@ARGV)
{
$files .= ' ';
$files .= '--reload-state='
if /\.m4f$/;
$files .= "$_";
}
# The warnings are the concatenation of 1. application's defaults,
# 2. $WARNINGS, $3 command line options, in that order.
# Set them in the order expected by the M4 macros: the converse.
@ -574,7 +588,7 @@ sub handle_m4 ($@)
. ' --debug=aflq'
. " --error-output=$tcache" . $req->id
. join (' --trace=', '', sort @macro)
. $files
. " @ARGV"
. ' </dev/null'
. " >$ocache" . $req->id);
verbose "running: $command";

View File

@ -1,6 +1,6 @@
# Definition of macro sets. -*- Makefile -*-
#
# Copyright 2001 Free Software Foundation, Inc.
# Copyright 2001, 2002 Free Software Foundation, Inc.
#
# This file is part of GNU Autoconf.
#
@ -138,6 +138,7 @@ args: --language Autoheader-preselections
args: --language Automake-preselections
args: --language Autoreconf-preselections
args: --language Autoscan-preselections
args: --language M4sh
end-language: "Autoconf"
@ -148,10 +149,11 @@ end-language: "Autoconf"
begin-language: "Autotest"
# patterns: *.at
args: --include @datadir@
args: autotest/autotest.m4
args: autotest/autotest.m4f
args: package.m4?
args: --mode 777
args: --warning syntax
args: --language M4sh
end-language: "Autotest"
@ -162,9 +164,10 @@ end-language: "Autotest"
begin-language: "M4sh"
# patterns: *.as
args: --include @datadir@
args: m4sugar/m4sh.m4
args: m4sugar/m4sh.m4f
args: --mode 777
args: --warning syntax
args: --language M4sugar
end-language: "M4sh"
@ -175,6 +178,6 @@ end-language: "M4sh"
begin-language: "M4sugar"
# patterns: *.msh
args: --include @datadir@
args: m4sugar/m4sugar.m4
args: m4sugar/m4sugar.m4f
args: --warning syntax
end-language: "M4sugar"

View File

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.25.
.TH AUTOM4TE "1" "January 2002" "autom4te 2.52h" "User Commands"
.TH AUTOM4TE "1" "February 2002" "autom4te 2.52h" "User Commands"
.SH NAME
autom4te \- Generate files and scripts thanks to M4
.SH SYNOPSIS
@ -8,7 +8,12 @@ autom4te \- Generate files and scripts thanks to M4
.SH DESCRIPTION
Run GNU M4 on the FILES, avoiding useless runs. If tracing, the output
consists of the traces only, otherwise output the expansion of the FILES.
The first of the FILES may be an M4 frozen file, but then must end in `.m4f'.
.PP
If some of the FILES are named `FILE.m4f' they are considered to be M4
frozen files of all the previous files (which are therefore not loaded).
If `FILE.m4f' is not found, then `FILE.m4' will be used, together with
all the previous files.
.PP
Some files may be optional, i.e., will only be processed if found in the
include path, but then must end in `.m4?'; the question mark is not part of
the actual file name.
@ -94,7 +99,7 @@ prepare to trace MACRO in a future run
.SH AUTHOR
Written by Akim Demaille.
.PP
Copyright 2001 Free Software Foundation, Inc.
Copyright 2001, 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "REPORTING BUGS"