mirror of
git://git.sv.gnu.org/autoconf
synced 2025-03-01 14:16:02 +08:00
* bin/autom4te.in (&load_configuration): Take the file as
argument. (&parse_args): Handle -C, --cache. ($help): Adjust. (MAIN): Load ~/.autom4te.cfg and ./.autom4te.cfg. * lib/autom4te.in (Autoconf): Pass --cache=autom4te.cache. * doc/autoconf.texi (Invoking autom4te): Document --cache. Now a subsection of... (Using autom4te): This new section. (Customizing autom4te): New. (autom4te.cache): Adjust.
This commit is contained in:
parent
02d19480e5
commit
da6caf35ba
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2002-10-25 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* bin/autom4te.in (&load_configuration): Take the file as
|
||||
argument.
|
||||
(&parse_args): Handle -C, --cache.
|
||||
($help): Adjust.
|
||||
(MAIN): Load ~/.autom4te.cfg and ./.autom4te.cfg.
|
||||
* lib/autom4te.in (Autoconf): Pass --cache=autom4te.cache.
|
||||
* doc/autoconf.texi (Invoking autom4te): Document --cache.
|
||||
Now a subsection of...
|
||||
(Using autom4te): This new section.
|
||||
(Customizing autom4te): New.
|
||||
(autom4te.cache): Adjust.
|
||||
|
||||
2002-10-25 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* doc/autoconf.texi (Generic Headers): More information on how to
|
||||
|
14
NEWS
14
NEWS
@ -1,6 +1,11 @@
|
||||
* Major changes in Autoconf 2.54a -*- outline -*-
|
||||
|
||||
|
||||
Tip of the release:
|
||||
|
||||
Did you have your configure.ac checked by autoscan?
|
||||
Did you try the warning options?
|
||||
|
||||
** Documentation
|
||||
|
||||
- AC_CHECK_HEADER, AC_CHECK_HEADERS
|
||||
@ -13,6 +18,15 @@
|
||||
- Produces messages (when --verbose) to be understood by Emacs'
|
||||
compile mode.
|
||||
|
||||
** Obsolete options
|
||||
Support for the obsoleted options -m, --macrodir, -l, --localdir is
|
||||
dropped in favor of the safer --include/--prepend-include scheme.
|
||||
|
||||
** Customization
|
||||
|
||||
- ~/.autom4te.cfg makes it possible to disable the caching mechanism
|
||||
(autom4te.cache). See `Customizing autom4te' in the documentation.
|
||||
|
||||
** Macros
|
||||
|
||||
- New macros
|
||||
|
@ -230,9 +230,8 @@ use File::Basename;
|
||||
use Autom4te::XFile;
|
||||
use strict;
|
||||
|
||||
# Configuration file.
|
||||
# Data directory.
|
||||
my $datadir = $ENV{'AC_MACRODIR'} || '@datadir@';
|
||||
my $autom4te_cfg = $ENV{'AUTOM4TE_CFG'} || "$datadir/autom4te.cfg";
|
||||
|
||||
# $LANGUAGE{LANGUAGE} -- Automatic options for LANGUAGE.
|
||||
my %language;
|
||||
@ -247,10 +246,10 @@ my $melt = 0;
|
||||
|
||||
# Names of the cache directory, cache directory index, trace cache
|
||||
# prefix, and output cache prefix.
|
||||
my $cache = "autom4te.cache";
|
||||
my $icache = "$cache/requests";
|
||||
my $tcache = "$cache/traces.";
|
||||
my $ocache = "$cache/output.";
|
||||
my $cache;
|
||||
my $icache;
|
||||
my $tcache;
|
||||
my $ocache;
|
||||
|
||||
# The macros to trace mapped to their format, as specified by the
|
||||
# user.
|
||||
@ -368,6 +367,7 @@ Operation modes:
|
||||
-f, --force don\'t rely on cached values
|
||||
-W, --warnings=CATEGORY report the warnings falling in CATEGORY
|
||||
-l, --language=LANG specify the set of M4 macros to use
|
||||
-C, --cache=[DIRECTORY] preserve results for future runs in DIRECTORY
|
||||
-m, --mode=OCTAL change the non trace output file mode (0666)
|
||||
-M, --melt don\'t use M4 frozen files
|
||||
|
||||
@ -443,14 +443,15 @@ sub files_to_options (@)
|
||||
}
|
||||
|
||||
|
||||
# load_configuration ()
|
||||
# ---------------------
|
||||
# Load the configuration file.
|
||||
sub load_configuration ()
|
||||
# load_configuration ($FILE)
|
||||
# --------------------------
|
||||
# Load the configuration $FILE.
|
||||
sub load_configuration ($)
|
||||
{
|
||||
my ($file) = @_;
|
||||
use Text::ParseWords;
|
||||
|
||||
my $cfg = new Autom4te::XFile ($autom4te_cfg);
|
||||
my $cfg = new Autom4te::XFile ($file);
|
||||
my $lang;
|
||||
while ($_ = $cfg->getline)
|
||||
{
|
||||
@ -467,7 +468,7 @@ sub load_configuration ()
|
||||
}
|
||||
elsif ($type eq 'end-language:')
|
||||
{
|
||||
error "$autom4te_cfg:$.: end-language mismatch: $lang"
|
||||
error "$file:$.: end-language mismatch: $lang"
|
||||
if $lang ne lc $words[0];
|
||||
}
|
||||
elsif ($type eq 'args:')
|
||||
@ -476,7 +477,7 @@ sub load_configuration ()
|
||||
}
|
||||
else
|
||||
{
|
||||
error "$autom4te_cfg:$.: unknown directive: $type";
|
||||
error "$file:$.: unknown directive: $type";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -507,6 +508,16 @@ sub parse_args ()
|
||||
}
|
||||
} while @language;
|
||||
|
||||
# --debug is useless: it is parsed below.
|
||||
if (exists $ENV{'AUTOM4TE_DEBUG'})
|
||||
{
|
||||
print STDERR "$me: concrete arguments:\n";
|
||||
foreach my $arg (@ARGV)
|
||||
{
|
||||
print STDERR "| $arg\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Process the arguments for real this time.
|
||||
my @trace;
|
||||
my @prepend_include;
|
||||
@ -520,7 +531,7 @@ sub parse_args ()
|
||||
|
||||
# Library directories:
|
||||
"B|prepend-include=s" => \@prepend_include,
|
||||
"I|include=s" => \@include,
|
||||
"I|include=s" => \@include,
|
||||
|
||||
# Tracing:
|
||||
# Using a hash for traces is seducing. Unfortunately, upon `-t FOO',
|
||||
@ -531,7 +542,10 @@ sub parse_args ()
|
||||
"p|preselect=s" => \@preselect,
|
||||
|
||||
# Freezing.
|
||||
"F|freeze" => \$freeze,
|
||||
"F|freeze" => \$freeze,
|
||||
|
||||
# Caching.
|
||||
"C|cache=s" => \$cache,
|
||||
);
|
||||
|
||||
error "too few arguments
|
||||
@ -548,6 +562,16 @@ Try `$me --help' for more information."
|
||||
$melt = 1
|
||||
if $freeze;
|
||||
|
||||
# Names of the cache directory, cache directory index, trace cache
|
||||
# prefix, and output cache prefix. If the cache is not to be
|
||||
# preserved, default to a temporary directory (automatically removed
|
||||
# on exit).
|
||||
$cache = $tmp
|
||||
unless $cache;
|
||||
$icache = "$cache/requests";
|
||||
$tcache = "$cache/traces.";
|
||||
$ocache = "$cache/output.";
|
||||
|
||||
# Normalize the includes: the first occurrence is enough, several is
|
||||
# a pain since it introduces a useless difference in the path which
|
||||
# invalidates the cache. And strip `.' which is implicit and always
|
||||
@ -1110,8 +1134,12 @@ sub freeze ($)
|
||||
## Main program. ##
|
||||
## -------------- ##
|
||||
|
||||
mktmpdir ('t4');
|
||||
load_configuration;
|
||||
mktmpdir ('am4t');
|
||||
load_configuration ($ENV{'AUTOM4TE_CFG'} || "$datadir/autom4te.cfg");
|
||||
load_configuration ("$ENV{'HOME'}/.autom4te.cfg")
|
||||
if -f "$ENV{'HOME'}/.autom4te.cfg";
|
||||
load_configuration (".autom4te.cfg")
|
||||
if -f ".autom4te.cfg";
|
||||
parse_args;
|
||||
|
||||
# Freezing does not involve the cache.
|
||||
|
@ -338,9 +338,12 @@ sub autoreconf ($)
|
||||
. join (' --trace=', '',
|
||||
# If you change this list, update the
|
||||
# `Autoreconf-preselections' section of autom4te.in.
|
||||
'AC_INIT', 'AM_GNU_GETTEXT', 'AC_PROG_LIBTOOL',
|
||||
'AC_CONFIG_HEADERS',
|
||||
'AC_CONFIG_SUBDIRS:AC_CONFIG_SUBDIRS:\$1')
|
||||
'AC_CONFIG_SUBDIRS:AC_CONFIG_SUBDIRS:\$1',
|
||||
'AC_INIT',
|
||||
'AC_PROG_LIBTOOL',
|
||||
'AM_GNU_GETTEXT',
|
||||
)
|
||||
. ' |');
|
||||
while ($_ = $traces->getline)
|
||||
{
|
||||
|
@ -311,7 +311,7 @@ Caching Results
|
||||
Programming in M4
|
||||
|
||||
* M4 Quotation:: Protecting macros from unwanted expansion
|
||||
* Invoking autom4te:: The Autoconf executables backbone
|
||||
* Using autom4te:: The Autoconf executables backbone
|
||||
* Programming in M4sugar:: Convenient pure M4 macros
|
||||
* Programming in M4sh:: Common shell Constructs
|
||||
|
||||
@ -324,6 +324,11 @@ M4 Quotation
|
||||
* Quadrigraphs:: Another way to escape special characters
|
||||
* Quotation Rule Of Thumb:: One parenthesis, one quote
|
||||
|
||||
Using @command{autom4te}
|
||||
|
||||
* Invoking autom4te:: A GNU M4 wrapper
|
||||
* Customizing autom4te:: Customizing the Autoconf package
|
||||
|
||||
Programming in M4sugar
|
||||
|
||||
* Redefined M4 Macros:: M4 builtins changed in M4sugar
|
||||
@ -6656,7 +6661,7 @@ and their interface might change in the future. As a matter of fact,
|
||||
|
||||
@menu
|
||||
* M4 Quotation:: Protecting macros from unwanted expansion
|
||||
* Invoking autom4te:: The Autoconf executables backbone
|
||||
* Using autom4te:: The Autoconf executables backbone
|
||||
* Programming in M4sugar:: Convenient pure M4 macros
|
||||
* Programming in M4sh:: Common shell Constructs
|
||||
@end menu
|
||||
@ -7159,12 +7164,15 @@ this happens, the resulting @command{configure} script will contain
|
||||
unexpanded macros. The @command{autoconf} program checks for this problem
|
||||
by doing @samp{grep AC_ configure}.
|
||||
|
||||
@node Invoking autom4te
|
||||
@section Invoking @command{autom4te}
|
||||
|
||||
The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition to
|
||||
Autoconf per se, heavily rely on M4. All these different uses revealed
|
||||
common needs factored into a layer over @command{m4}:
|
||||
@c ---------------------------------------- Using autom4te
|
||||
|
||||
@node Using autom4te
|
||||
@section Using @command{autom4te}
|
||||
|
||||
The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition
|
||||
to Autoconf per se, heavily rely on M4. All these different uses
|
||||
revealed common needs factored into a layer over @command{m4}:
|
||||
@command{autom4te}@footnote{
|
||||
@c
|
||||
Yet another great name from Lars J. Aas.
|
||||
@ -7172,8 +7180,17 @@ Yet another great name from Lars J. Aas.
|
||||
}.
|
||||
|
||||
@command{autom4te} should basically considered as a replacement of
|
||||
@command{m4} itself. In particular, its handling of command line
|
||||
arguments is modeled after M4's:
|
||||
@command{m4} itself.
|
||||
|
||||
@menu
|
||||
* Invoking autom4te:: A GNU M4 wrapper
|
||||
* Customizing autom4te:: Customizing the Autoconf package
|
||||
@end menu
|
||||
|
||||
@node Invoking autom4te
|
||||
@subsection Invoking @command{autom4te}
|
||||
|
||||
The command line arguments are modeled after M4's:
|
||||
|
||||
@example
|
||||
autom4te @var{options} @var{files}
|
||||
@ -7375,9 +7392,16 @@ be removed} at any moment (especially if for some reason
|
||||
@command{autom4te} considers it is trashed).
|
||||
|
||||
@table @option
|
||||
@item --cache=[@var{directory}]
|
||||
@itemx -C
|
||||
@itemx -C@var{directory}
|
||||
Specify the name of the directory where the result should be cached.
|
||||
Passing an empty value disables caching. Be sure to pass a relative
|
||||
path name, as for the time being, global caches are not supported.
|
||||
|
||||
@item --force
|
||||
@itemx -f
|
||||
Do not consider the cache (but update it anyway).
|
||||
If a cache is used, consider it obsolete (but update it anyway).
|
||||
@end table
|
||||
|
||||
@sp 1
|
||||
@ -7498,6 +7522,41 @@ foo.m4}, i.e., @samp{autom4te --prepend-include /usr/local/share/autoconf
|
||||
m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4}. The definition
|
||||
of the languages is stored in @file{autom4te.cfg}.
|
||||
|
||||
@node Customizing autom4te
|
||||
@subsection Customizing @command{autom4te}
|
||||
|
||||
One can customize @command{autom4te} via @file{~/.autom4te.cfg} (i.e.,
|
||||
as found in the user home directory), and @file{./.autom4te.cfg} (i.e.,
|
||||
as found in the directory from which @command{autom4te} is run). The
|
||||
order is first reading @file{autom4te.cfg}, then @file{~/.autom4te.cfg},
|
||||
then @file{./.autom4te.cfg}, and finally the command line arguments.
|
||||
|
||||
In these text files, comments are introduced with @code{#}, and empty
|
||||
lines are ignored. Customization is performed on a per-language basis,
|
||||
wrapped in between a @samp{begin-language: "@var{language}"},
|
||||
@samp{end-language: "@var{language}"} pair.
|
||||
|
||||
Customizing a language stands for appending options (@pxref{Invoking
|
||||
autom4te}) to the current definition of the language. Options, and more
|
||||
generally arguments, are introduced by @samp{args: @var{arguments}}.
|
||||
You may use the traditional shell syntax to quote the @var{arguments}.
|
||||
|
||||
As an example, to disable Autoconf caches (@file{autom4te.cache})
|
||||
globally, include the following lines in @file{~/.autom4te.cfg}:
|
||||
|
||||
@verbatim
|
||||
## ------------------ ##
|
||||
## User Preferences. ##
|
||||
## ------------------ ##
|
||||
|
||||
begin-language: "Autoconf"
|
||||
args: --cache=''
|
||||
end-language: "Autoconf"
|
||||
@end verbatim
|
||||
|
||||
The most typical
|
||||
use is probably to disable caches with Autoconf
|
||||
|
||||
|
||||
@node Programming in M4sugar
|
||||
@section Programming in M4sugar
|
||||
@ -14188,6 +14247,20 @@ and is increasing with the size of @file{configure.ac}.
|
||||
|
||||
But it is and remains being simply a cache: you can safely remove it.
|
||||
|
||||
@sp 1
|
||||
|
||||
@display
|
||||
Can I permanently get rid of it?
|
||||
@end display
|
||||
|
||||
The creation of this cache can be disabled from @file{~/.autom4te.cfg},
|
||||
see @ref{Customizing autom4te}, for more details. You should be aware
|
||||
that disabling the cache slows down the Autoconf test suite by 40%. The
|
||||
more GNU Build System components are used, the more the cache is useful;
|
||||
for instance running @samp{autoreconf -f} on the Coreutils is twice
|
||||
slower without the cache @emph{although @option{--force} implies that
|
||||
the cache is not fully exploited}, and eight times slower than without
|
||||
@option{--force}.
|
||||
|
||||
|
||||
@c ===================================================== History of Autoconf.
|
||||
|
@ -162,6 +162,7 @@ end-language: "Autoscan-preselections"
|
||||
|
||||
begin-language: "Autoconf"
|
||||
args: --prepend-include @datadir@
|
||||
args: --cache=automate.cache
|
||||
args: autoconf/autoconf.m4f
|
||||
args: acsite.m4?
|
||||
args: aclocal.m4?
|
||||
|
@ -43,6 +43,9 @@ report the warnings falling in CATEGORY
|
||||
\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
|
||||
specify the set of M4 macros to use
|
||||
.TP
|
||||
\fB\-C\fR, \fB\-\-cache\fR=\fI[DIRECTORY]\fR
|
||||
preserve results for future runs in DIRECTORY
|
||||
.TP
|
||||
\fB\-m\fR, \fB\-\-mode\fR=\fIOCTAL\fR
|
||||
change the non trace output file mode (0666)
|
||||
.TP
|
||||
|
Loading…
Reference in New Issue
Block a user