Akim Demaille [Wed, 15 Aug 2001 07:49:59 +0000 (07:49 +0000)]
* bin/autom4te.in (@m4_warning): New.
(&handle_m4): Use it.
* tests/m4sugar.at (m4_warn): Pass `-f' to autom4te to ensure the
warnings are issued at each run.
* tests/atspecific.m4 (AT_CHECK_M4SUGAR, AT_CHECK_M4SH): M4sugar
is in the src tree.
Akim Demaille [Mon, 13 Aug 2001 12:25:05 +0000 (12:25 +0000)]
* Makefile.am: Remove dead code and dead comments.
(pdf, html): New targets.
* doc/autoconf.texi (Using Autotest): New chapter.
* doc/Makefile.am (pdf): New targets.
(CLEANFILES): Adjust.
* lib/autoconf/c.m4 (AC_C_BIGENDIAN): Guess endianness by grep'ing
magic values from an object file when cross-compiling.
Based on code by Guido Draheim <Guido.Draheim@gmx.de>.
Akim Demaille [Tue, 7 Aug 2001 07:57:01 +0000 (07:57 +0000)]
* lib/autotest/general.m4 (AT_INIT): All the `at-*' are to be
removed.
(at-setup-line): Huh? Be a variable `at_setup_line', not a file.
No need to remove the files before and after the each test, before
each test and at the end of the suite is enough.
Display only the children `times', not the shell's.
If the test failed or was skipped, at-times is not available.
Akim Demaille [Tue, 7 Aug 2001 07:56:51 +0000 (07:56 +0000)]
Always produce testsuite.log, including when there are no
failures. This helps getting information on skipped tests, and
duration of the tests. Err, implement the latter btw.
* lib/autotest/general.m4 (AT_INIT): Set up fd 6 for the log.
Dump information on the first run of each test.
(AT_CLEANUP): Create `at-times' containing the duration of the
test group.
Akim Demaille [Tue, 7 Aug 2001 07:56:40 +0000 (07:56 +0000)]
The use of `dumpstat' revealed that `len' was used although it
should not. m4_text_wrap was using it, but in the Autoconf world
where it is legal. Hence (i) test M4sh in its own world, not
Autoconf's, and (ii), ahem, fix the bug :)
* lib/autotest/general.m4: Be sure the set good quotes, as tracing
does not like `' instead of [].
(AT_INIT): Forbid `^_?AT_'.
And don't output such tokens.
* tests/Makefile.am (CLEANFILES): Add `script', `script.s4g',
`script.as', and `autom4te.cache'.
Remove `empty' and `macro' which are no longer used.
* tests/atspecific.m4 (AT_CHECK_M4SUGAR, AT_CHECK_M4SH): New.
* tests/m4sugar.at: Use it.
* lib/m4sugar/m4sugar.m4: Use `m4_len' not `len'.
Akim Demaille [Sat, 4 Aug 2001 13:16:47 +0000 (13:16 +0000)]
Don't rely on M4sugar outputting the patterns in files, since we
might process the output _without_ running m4, hence without these
files.
* lib/m4sugar/m4sugar.m4 (m4_init): No need for `m4_tmpdir'.
* bin/autom4te.in (@Request::includes): Remove, unused.
(@Request::source): Rename as...
(@Request::input): this.
(@preselect): Add `m4_pattern_forbid' and `m4_pattern_allow'.
(&handle_output): Fetch the patterns from the traces.
`$forbidden' and `$allowed' are constant: use m//o.
(&handle_m4): M4sugar no longer wants `m4_tmpdir'.
(m4_pattern_forbid, m4_pattern_allow): Adjust for tracing only.
Akim Demaille [Sat, 4 Aug 2001 13:16:30 +0000 (13:16 +0000)]
`autoconf && autoheader' is sped up. Now, speed up `autoheader &&
autoconf', i.e., in addition to caching traces, cache the output.
* bin/autom4te.in (Request::cache): Rename as...
(Request::id): this.
($cache, $icache, $tcache, $ocache): New.
(&handle_m4): Save M4 output in the cache instead of $tmp.
(&handle_output): Adjust.
(&up_to_date_p): Check that the output cache is up to date too.
(top level): Run `&handle_m4' iff force or the cache is invalid.
Run `&handle_output' if the output cache is more recent.
Akim Demaille [Sat, 4 Aug 2001 13:16:15 +0000 (13:16 +0000)]
* bin/autom4te.in ($force): New.
(&parse_args, &print_usage): -f, --force is a new option.
(&handle_output): CPP directives might have spaces after `#'.
(&parse_args): The first file only can be frozen.
Akim Demaille [Sat, 4 Aug 2001 13:14:39 +0000 (13:14 +0000)]
Don't let autom4te compute the `include' traces several times:
first check that the trace cache file is up to date, and then
compare its timestamp with that of the output.
* bin/autom4te.in, bin/autoupdate.in, bin/autoscan.in: Normalize
the preamble. Don't require 5.005 as Autom4te::General does it,
and better yet (use `use', not `require'!).
* lib/Autom4te/Struct.pm: Rename the last occurrences of
Class::Struct as Autom4te::Struct.
* lib/Autom4te/General.pm (File::stat): Use it.
(&mtime): New, export it.
* bin/autom4te.in: Use it.
Declare `$req' is invalid if it is outdated.
Don't declare it valid before saving it if something went wrong.
Akim Demaille [Sat, 4 Aug 2001 13:14:10 +0000 (13:14 +0000)]
Autom4te shall not encode Autoconf data, and preselecting traces
must be proposed to the users.
* bin/autom4te.in (@required_trace): Remove.
(@preselect): New.
(&parse_args, &print_usage): -p, --preselect is a new option.
(&up_to_date_p): Adjust.
* bin/autoconf.in: Preselect some Autoconf macros.
Akim Demaille [Fri, 3 Aug 2001 09:14:38 +0000 (09:14 +0000)]
Clean up the handling of the M4 builtins tracing exception.
* bin/autom4te.in (Request::request): Don't complete M4 builtins
trace requests.
(@m4_builtins): Rename as...
(@m4_builtin): this.
(%m4_builtin_alternate_name): New.
(&parse_args): Complete the trace requests with alternate names.
(&handle_traces): Hence no longer do it here.
(&trace_requests): Remove, unused.
Akim Demaille [Fri, 3 Aug 2001 09:09:45 +0000 (09:09 +0000)]
* lib/m4sugar/m4sugar.m4 (m4_init): Also forbid `_m4_*' tokens.
(m4_divert_pop): Dump the whole diversion stack when a diversion
mismatch happens.
* bin/autom4te.in (&handle_output): Remember of the first
occurrence of a possibly undefined macro, not the last.
Complain about the possibly undefined macros in the same order as
the appear in the output.
* lib/autoconf/Makefile.am (autoconf.m4f): List its dependencies.
* tests/tools.at (autoconf: forbidden tokens, basic)
(autoconf: forbidden tokens, exceptions): No longer sort
autoconf's stderr, as it is now deterministic.
Check that `dnl' is caught.
Akim Demaille [Wed, 1 Aug 2001 15:10:36 +0000 (15:10 +0000)]
* lib/Autom4te/General.pm: Use `carp' and `croak', not `warn' and
`die'.
(&END): New.
* bin/autoconf.in, bin/autom4te.in, bin/autoupdate.in: Remove your
`END', as `Autom4te::General::END' will be triggered.
* bin/autoupdate.in, bin/autoscan.in: Improve error messages accuracy.
* bin/autoupdate.in (File::Compare, File::Copy): Use them instead of
system to run `mv', `rm', and `cmp'.
Akim Demaille [Wed, 1 Aug 2001 13:56:52 +0000 (13:56 +0000)]
* autoconf.in ($AWK): Remove, no longer used.
* test/tools.at: Use AT_CHECK_AUTOCONF.
(AWK portability): Remove, for autoconf no longer uses AWK.
(Syntax of the Perl scripts): New.
* configure.ac: autoconf no longer needs an AWK with a good
regexp engine.
Use a static test on AC_PACKAGE_VERSION.
* autom4te.in (&up_to_date_p): Output depends on the arguments.
* lib/autoconf/Makefile.am: Ship version.m4, maintainer file.
* tests/atconfig.in (PERL): New.
* autoconf.in: Try to define the variables before using them.
* autom4te.in ($perllibdir): Use `$autom4te_perllibdir' as envvar
instead of `$perllibdir'.
* tests/atconfig.in ($autom4te_perllibdir): Export it.
Let autoconf use autom4te for traces.
* autoconf.in ($task, task trace): Remove, merely pass --trace to
autom4te.
* autoheader.in: Don't pass `-' to autoconf, rather, a tmp file.
(Because I found no way for autom4te to accept `-').
* autom4te.in (&Request::request): Beware of M4 builtins.
(END): Don't try to remove the content of an empty dir.
(&parse_args): Default is `$f:$l:$n:$%', not `$f:$l:$n:$*'.
(&handle_output): Set a default value to `$forbidden'.
* autoupdate.in (&verbose, &xsystem): New, from autom4te.in.
($autoconf): Pass --debug and --verbose.
* tests/atspecific.m4 (AT_CHECK_AUTOCONF): Clean up autom4te's
cache.
Let autoconf use autom4te to create configure.
* autoconf.in ($automate): New var.
(task script): Use autom4te.
* autom4te.in (File::Spec): Use it.
(&find_file): New.
(&parse_args): --warning is -W, not -w.
Find the top level files.
(&handle_m4): Pass the warnings flags.
Don't report verbosely m4's failures, unless requested.
(&handle_output): Don't complain for forbidden tokens in comments.
Be sure to report all the forbidden tokens within a single line.
(&trace_format_to_m4): Preserve `$_'.
(&handle_traces): Sort the output macros.
(&up_to_date_p): Find the files before trying to get its time stamp.
The C-Fortran 77 hooks are available only once AC_F77_DUMMY_MAIN
was run, while they are needed also when it is expanded.
Reported by Nicolas Joly.
* aclang.m4 (AC_F77_DUMMY_MAIN): Define _AC_LANG_PROGRAM_C_F77_HOOKS.
(AC_LANG_PROGRAM(C)): Use it instead of depending upon
AC_F77_DUMMY_MAIN being expanded.
The runtime test for AC_FUNC_GETPGRP fails when prototypes are
used. Well, then use the prototypes when you can, and runtime as
a last resort.
Reported by Artur Frysiak
* acfunctions.m4 (_AC_FUNC_GETPGRP_TEST): New.
(AC_FUNC_GETPGRP): Use it.
First try to compile with 0-ary or 1-ary calls.
* Makefile.am (INSTALL.txt): Don't use $@ and $< in non suffix
rules.
From Marc Espie.
* Makefile.maint (release-archive-dir): Rename as...
(release_archive_dir): this, so that it can be specialized in
Makefile.
* autoscan.in: Use IO::File.
Adjust all the routines to use it.
($log): New file (autoscan.log).
(output): Dump detailed logs into $log, and a shortened version to
stderr.
(&scan_makefile): Refine the regexp catching tokens in the code.
* doc/autoconf.texi (autoscan Invocation): Document `autoscan.log'
and the `configure.ac' checking feature.