Akim Demaille [Mon, 27 Aug 2001 07:21:51 +0000 (07:21 +0000)]
* lib/autotest/general.m4 (AT_INIT) <at_cmd_line>: Remove.
<at_cmd_line>: New.
Pass it to debug-*.sh scripts.
<AUTOTEST_PATH>: May contain absolute dir names.
Akim Demaille [Mon, 27 Aug 2001 07:21:36 +0000 (07:21 +0000)]
* lib/autotest/general.m4 (AT_INIT): Log the command line.
Support `VAR=VAL' as arguments.
Compute PATH _after_ the options processing, so that AUTOTEST_PATH
may be set via the command line.
Akim Demaille [Mon, 27 Aug 2001 07:21:20 +0000 (07:21 +0000)]
* lib/autoconf/autotest.m4 (AC_CONFIG_TESTDIR): $2 defaults to $1.
* lib/autotest/autotest.m4 (AT_INIT): Expand AUTOTEST_PATH into
first the build dirs, then the src dirs.
* configure.ac (AC_CONFIG_TESTDIR): Adjust.
Akim Demaille [Mon, 27 Aug 2001 07:20:21 +0000 (07:20 +0000)]
* lib/autoconf/status.m4 (_AC_SRCPATHS): Rename `ac_dots' as
`ac_top_builddir' to mimic Automake's vocabulary, which much more
readable.
Adjust callers.
* doc/autoconf.texi (Configuration Actions): Document the vars
available in commands.
Emphasize the risks of collisions in init-cmds.
Akim Demaille [Mon, 27 Aug 2001 07:16:23 +0000 (07:16 +0000)]
* lib/autoconf/status.m4 (_AC_SRCPATHS): New.
(_AC_OUTPUT_LINKS, _AC_OUTPUT_FILES, _AC_OUTPUT_SUBDIRS): Use it.
Standardize the var names (ac_sub_srcdir -> ac_srcdir, ac_subdir
-> ac_dir).
(_AC_OUTPUT_HEADERS): AS_DIRNAME always return a dir name.
* lib/autoconf/general.m4 (_AC_INIT_HELP): Ditto.
Akim Demaille [Mon, 27 Aug 2001 07:12:16 +0000 (07:12 +0000)]
Automake 1.5.
* Makefile.am (AUTOMAKE_OPTIONS): Add 1.5 and dist-bzip2.
(AMTAR): Help automake define it.
(INSTALL, install-data-hook): The INSTALL.txt trick is no longer
needed, 1.5 can have a macro and a target with the same name.
* m4/auxdir.m4, m4/cond.m4, m4/depend.m4, m4/install-sh.m4,
* m4/strip.m4: New.
* m4/init.m4, m4/sanity.m4: Update.
* doc/Makefile.am (CLEANFILES): 1.5 knows the texi2dvi files.
* lib/autoconf/Makefile.am, lib/autotest/Makefile.am,
* lib/m4sugar/Makefile.am, lib/autoscan/Makefile.am,
* lib/Autom4te/Makefile.am, man/Makefile.am: Use dist/nodist.
Akim Demaille [Mon, 27 Aug 2001 07:08:56 +0000 (07:08 +0000)]
Provide a mean to ``AC_PREREQ'' for M4sugar, M4sh and Autotest.
* lib/autoconf/version.in: Remove.
* lib/m4sugar/version.in: New.
* lib/m4sugar/m4sugar.m4 (m4_acversion, m4_version_prereq): New.
Adjust callers.
* bin/autoupdate.in: Distinguish M4sugar vs. Autoconf macros by
the name of the directory they're in, instead of the filename,
since version.m4 is now in m4sugar, but m4_acversion must not be
classified as an Autoconf macro.
($input_m4): Don't qualify the path to m4sugar.
Rather, pass autoconf_dir to m4.
* tests/Makefile.am (testsuite): Remove -I top_srcdir, unneeded.
* tests/suite.at: Require 2.52c.
Akim Demaille [Mon, 27 Aug 2001 07:03:48 +0000 (07:03 +0000)]
testsuite.log should include config.log.
* lib/autotest/autotest.m4: New.
* lib/autotest/general.m4, tests/atspecific.m4: Adjust.
* tests/suite.at : Adjust.
(AT_INIT): Log config.log.
* lib/m4sugar/m4sugar.m4 (m4_text_box): New.
* lib/m4sugar/m4sh.m4 (_AS_BOX_LITERAL): Adjust.
* lib/autoconf/general.m4 (_AC_INIT_CONFIG_LOG): Use them.
(_AC_INIT_PREPARE): Fix the incredibly messy and buggy completion
of config.log on traps.
(_AC_OUTPUT_CONFIG_STATUS): Use AS_BOX.
Use consistently `_ACEOF' for configure's here docs, and `_CSEOF'
for config.status'.
Open the log as soon as possible.
Use the same log introduction as configure's.
* lib/autoconf/c.m4 (AC_C_BIGENDIAN): Prepare the cross-compile
program with AC_LANG_PROGRAM before feeding it to
AC_COMPILE_IFELSE. Cleanup grep usage.
Akim Demaille [Mon, 20 Aug 2001 15:16:54 +0000 (15:16 +0000)]
* ChangeLog, ChangeLog.0, ChangeLog.1, ChangeLog.2, AUTHORS, BUGS,
* NEWS, README, README-alpha, TODO, tests/README: This package is
`Autoconf', not `autoconf' (the executable).
Akim Demaille [Mon, 20 Aug 2001 14:46:59 +0000 (14:46 +0000)]
* lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Warn if the
arguments are not literals.
* doc/autoconf.texi (Input) <AC_INIT>: Arguments must be literals.
Specify the output variables, and macros defined.
Akim Demaille [Mon, 20 Aug 2001 14:46:41 +0000 (14:46 +0000)]
* doc/autoconf.texi (Examining Declarations) <AC_TRY_CPP>:
(Examining Syntax) <AC_TRY_COMPILE>
(Examining Libraries) <AC_TRY_LINK>
(Test Programs) <AC_TRY_RUN>: These macros double quote some of
their arguments.
Reported by Werner Lemberg.
Akim Demaille [Mon, 20 Aug 2001 14:46:29 +0000 (14:46 +0000)]
* lib/autotest/general.m4 (AT_INIT): Compute top_builddir,
top_srcdir and srcdir from at_topbuild_2_topsrc and at_testdir.
Load atlocal late enough to dump it in the log.
* m4/atconfig.m4 (AT_CONFIG): Pass them to atconfig.
Akim Demaille [Mon, 20 Aug 2001 14:46:02 +0000 (14:46 +0000)]
* tests/torture.at (Configuring subdirectories): New test.
* lib/autoconf/general.m4 (_AC_INIT_SRCDIR): Say what you are
looking for.
* m4/atconfig.m4: Be sure the let $[0] be expandable.
(top_srcdir): Fix its computation.
Akim Demaille [Mon, 20 Aug 2001 14:45:49 +0000 (14:45 +0000)]
* lib/autoconf/general.m4 (_AC_OUTPUT_COMMANDS): Say what you do.
* m4/atconfig.m4 (AT_CONFIG): $1 is now the directory where the
test suite lives.
Create `atconfig' automagically.
Configure atlocal.in if present.
* tests/atconfig.in: Remove.
* tests/atlocal.in: New.
* tests/Makefile.am: Adjust.
Akim Demaille [Mon, 20 Aug 2001 14:45:22 +0000 (14:45 +0000)]
Huh!?!?! There are still some user EOF tags used, which prevents
their use in AC_CONFIG_COMMANDS for instance...
* lib/autoconf/general.m4, lib/autoconf/specific.m4,
* lib/autotest/general.m4: Rename the EOF tags as `_ACEOF',
`_CSEOF', or `_ATEOF', as appropriate.
* lib/m4sugar/Makefile.am, lib/autoconf/Makefile.am,
* lib/autotest/Makefile.am (check-local): Enforce this constraint.
Akim Demaille [Mon, 20 Aug 2001 14:45:00 +0000 (14:45 +0000)]
Autotest invokes M4sh's initialization.
* lib/autotest/general.m4: Adjust the diversion names.
(AT_INIT): Run AS_INIT.
Use the BINSH diversion to invoke /bin/sh.
* tests/base.at, tests/m4sh.at, tests/m4sugar.at, tests/tools.at:
* tests/torture.at: Respect M4sugar and M4sh macro name spaces.
Akim Demaille [Mon, 20 Aug 2001 14:44:48 +0000 (14:44 +0000)]
Let M4sh have its own diversions.
* lib/autoconf/general.m4 (_m4_divert(BINSH), _m4_divert(REVISION))
(_m4_divert(NOTICE)): Rename as...
* lib/m4sugar/m4msh.m4 (_m4_divert(BINSH), _m4_divert(HEADER-REVISION))
(_m4_divert(HEADER-COMMENT)): these.
(_m4_divert(HEADER-COPYRIGHT), _m4_divert(HEADER-COPYRIGHT)): New.
(_m4_divert(NOTICE)): New, for Libtool.
* lib/autoconf/general.m4 (_m4_divert(PREPARE)): Remove, replaced
long ago with `_m4_divert(GROW)'.
(AC_COPYRIGHT, AC_REVISION, _AC_INIT_NOTICE): Adjust.
Akim Demaille [Fri, 17 Aug 2001 14:46:05 +0000 (14:46 +0000)]
* lib/autotest/general.m4 (AT_INIT): Refer to `$as_me.log', not
`$0.log' as for projects where testsuite is in src, we'd have
testsuite.log created in src.
Akim Demaille [Fri, 17 Aug 2001 12:07:26 +0000 (12:07 +0000)]
* doc/autoconf.texi: Work around Texinfo buglets.
(Transformation Rules): One example is enough, users are expected
to have their brains on. And BTW, use DESTDIR.
(dvar): New macro. Use it.
Akim Demaille [Fri, 17 Aug 2001 12:07:10 +0000 (12:07 +0000)]
* doc/autoconf.texi (Writing testsuite.at) <AT_CHECK>: Complete.
* lib/autotest/general.m4 (AT_INIT): Use the relative dir when
looking for ChangeLogs.
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.