Commit Graph

29 Commits

Author SHA1 Message Date
Ralf Wildenhues
14f61daa3c * doc/autoconf.texi (Looping constructs): New node, to
document m4_for, m4_foreach, m4_foreach_w, and mention
obsolete AC_FOREACH.
(Obsolete Macros): Document AC_FOREACH.
* lib/m4sugar/m4sugar.m4 (_m4_for): Fix declaration comment.
(m4_for): Fix to never loop (almost) endlessly, work correctly
with arithmetic expressions in arguments, a step of zero or
non-integer multiple of the interval, and avoid integer
overflow.
* tests/m4sugar.at: New test for m4_for, m4_foreach, and
m4_foreach_w.
2006-02-20 21:43:05 +00:00
Paul Eggert
681d17dce2 Update FSF postal mail address. 2005-05-14 07:00:38 +00:00
Paul Eggert
341d9d604c * lib/m4sugar/m4sugar.m4 (m4_re_string, m4_re_word): Revert 2002-03-04.
* tests/local.at (AT_CHECK_M4SUGAR): Add `m4sugar' to keywords.
(AT_CHECK_ENV): Ignore LTLIBOBJS, FC variables, EGREP, FGREP, and SED.
* tests/m4sugar.at (AT_CHECK_M4SUGAR_TEXT, AT_CHECK_M4RE): New macros.
(Standard regular expressions): New test.
(m4_warn, m4_require: circular dependencies, m4_text_wrap): Strip
excess test name quoting.
* tests/semantics.at (AC_CHECK_HEADERS_OLD, AC_CHECK_HEADERS_NEW): Pass
CPPFLAGS to `configure' instead of setting it in `configure'.
2005-02-05 04:55:08 +00:00
Paul Eggert
b5b8b59870 Simplify the implementation of m4_require (a.k.a. AC_REQUIRE).
Update the long comment explaining it.

m4_require no longer writes an ``is required by'' line to the
execution stack.  It contains only one bit of non-redundant
information: that the macro was required, not called.  And even
this bit is useless in most situations: have you ever met a macro
which both calls and requires the same macro?

* lib/m4sugar/m4sugar.m4 (_m4_defun_pro): Don't push a diversion...
(_m4_defun_pro_outer): ... only via this macro, for the outermost
  macro.
(_m4_defun_epi, _m4_defun_epi_outer): Complementarily.
(m4_expansion_stack_pop): Remove the misplaced comment.
(m4_require): Don't put the ``is required by'' line to the
  execution stack; slightly improve the out-of-a-defun error message.
(_m4_divert_grow): New macro, counter for the temporary diversions.
(_m4_require_call): Use it.
* tests/m4sugar.at (m4_require): Expect output without the
  ``is required by'' messages.
2005-01-31 23:52:49 +00:00
Akim Demaille
9a71d441c5 * tests/m4sugar.at (cross_warning): Make sure to enable the
output, so that we can track spurious m4sugar output.
* tests/local.at: Require 2.57.
(AT_CHECK_M4SUGAR, AT_CHECK_M4SH): Don't m4_default the arguments that
are defaulted by AT_CHECK anyway.
Use AT_CHECK_AUTOM4TE.
* lib/m4sugar/m4sugar.m4: There should be no output at all: add a
missing dnl.
2003-08-27 15:14:03 +00:00
Akim Demaille
358bc50517 Output stack traces in warnings.
* lib/m4sugar/m4sugar.m4 (_m4_warn): New.
Replace the former...
(m4_warn): Pass the call stack to _m4_warn.
* bin/autom4te.in: Adjust to output the call stack.
* tests/m4sugar.at (m4@&t@_warn): Adjust.
2003-08-22 13:38:33 +00:00
Akim Demaille
e491f83180 First stab at preserving warnings between calls to autom4te,
including when the cache is used.
There are still several issues: (i) there are too many runs of m4
(one for include, one for warnings, and some more), (ii) warnings
spreading on several lines are not handled gracefully, (iii) the
code meant to have the call stack display for errors does not work
(its handling should move from m4 to autom4te).
* bin/autom4te.in Autom4te::Channels, Autom4te::ChannelDefs):
Use them.
(@preselect): Add m4_warn.
($exit_status): Remove, use $exit_code.
($help): Use Autom4te::ChannelDefs::usage.
(&handle_m4): No longer define the m4_warnings.
At each run, extract and report the warnings.
Always cache the result, including if the exit status is on
failure, since if nothing changes, we should result in the same
failure, hence we can use the cache.
* lib/m4sugar/m4sugar.m4 (m4_warning_ifelse, _m4_warning_ifelse)
(_m4_warning_error_ifelse, __m4_warning_error_ifelse, _m4_warn):
Remove.
(m4_warn): Redefine as a do-nothing: it is its invocation that
matters, as warnings are now reported via traces.
* lib/autoconf/general.m4 (AC_DIAGNOSE): Don't make it a copy of
the contents of m4_warn: make it _call_ m4_warn, so that tracing
the latter reveals calls to the former.
Adjust the tests.
* tests/m4sugar.at (m4@&t@_warn): Use existing warning categories.
2003-08-21 17:25:28 +00:00
Akim Demaille
a6cc487161 * bin/autom4te.in (handle_m4): Pass --fatal-warning to m4, so that
missing included files _are_ errors.
Thanks to Alexandre Duret-Lutz.
* tests/tools.at (autom4te cache): Adjust.
* tests/atspecific.m4 (AT_CHECK_AUTOM4TE): New.
(AT_CHECK_M4SUGAR): Use it.
* tests/m4sugar.at (m4_warn, m4_require: circular dependencies):
Adjust.
* tests/tools.at (autom4te): Now it does exit 1.
2002-10-18 15:20:46 +00:00
Akim Demaille
a364aa42ba * lib/Autom4te/General.pm (&xqx): New.
(&xsystem): Use WIFEXITED and WEXITSTATUS instead of decoding $? by
hand, which is not portable.
(&error): New.
* bin/autom4te.in: Use them.
Use &error instead of die.
* tests/m4sugar.at (m4_warn, m4_require: circular dependencies):
Adjust.
2002-08-29 08:03:10 +00:00
Akim Demaille
0717332aed * lib/m4sugar/m4sh.m4 (AS_DIRNAME_EXPR): Use AS_REQUIRE.
* tests/tools.at (AT_DATA_FORBIDDEN): Rename/move/duplicate to...
* tests/atspecific.m4 (AT_DATA_M4SUGAR, AT_DATA_M4SH): here.
* tests/tools.at, tests/m4sh.at: Use it.
* tests/m4sh.at: Don't rely on Autoconf macros.
(DIRNAME_TEST): Also exercise the expr variant.
* tests/m4sugar.at, tests/atspecific.m4 (AT_CHECK_M4SUGAR): The
preferred M4sugar extension is now `.4s'.
* tests/README: Remove.
2001-10-08 08:21:54 +00:00
Akim Demaille
0b057944a7 * bin/autom4te.in (&handle_output): s/@__@/@&t@/.
Suggested by Paul Eggert.
2001-08-29 13:11:16 +00:00
Akim Demaille
2ffdce9940 * tests/base.at, tests/m4sh.at, tests/m4sugar.at,
* tests/semantics.at, tests/tools.at, tests/torture.at:
s/^AT_DATA(([^][]+),/AT_DATA([$1],/.
2001-08-20 14:45:09 +00:00
Akim Demaille
5693a536c2 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.
2001-08-20 14:45:00 +00:00
Akim Demaille
f4f20f1c63 * tests/base.at, tests/compile.at, tests/foreign.at,
* tests/m4sh.at, tests/m4sugar.at, tests/mktests.sh,
* tests/semantics.at, tests/suite.at, tests/tools.at,
* tests/torture.at: Ask Autotest mode, not Autoconf mode.
2001-08-20 14:44:38 +00:00
Akim Demaille
283bf6a536 * 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.
2001-08-15 07:49:59 +00:00
Alexandre Duret-Lutz
420008ad84 * AUTHORS, BUGS, ChangeLog, ChangeLog.0, ChangeLog.1,
ChangeLog.2, GNUmakefile, Makefile.maint, NEWS, README,
README-alpha, TODO, configure.ac, lib/autoconf/Makefile.am,
m4/atconfig.m4, m4/init.m4, m4/m4.m4, m4/missing.m4,
m4/sanity.m4, tests/README, tests/aclocal.m4,
tests/atspecific.m4, tests/base.at, tests/compile.at,
tests/foreign.at, tests/m4sh.at, tests/m4sugar.at,
tests/semantics.at, tests/suite.at, tests/tools.at,
tests/torture.at: Add copyright notice.

* tests/mktests.sh: Update year in copyright notice.
2001-08-12 13:05:11 +00:00
Akim Demaille
9f76b38080 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'.
2001-08-07 07:56:40 +00:00
Akim Demaille
6f629af81a Remove accidental additions.
Reported by Nicolas Joly.
2001-08-04 15:19:57 +00:00
Akim Demaille
b21ca4dd20 * acfunctions.m4: Rename as...
* lib/autoconf/functions.m4: this.
* acgeneral.m4: Rename as...
* lib/autoconf/general.m4: this.
* acheaders.m4: Rename as...
* lib/autoconf/headers.m4: this.
* aclang.m4: Rename as...
* lib/autoconf/lang.m4: this.
* acoldnames.m4: Rename as...
* lib/autoconf/oldnames.m4: this.
* acspecific.m4: Rename as...
* lib/autoconf/specific.m4: this.
* actypes.m4: Rename as...
* lib/autoconf/types.m4: this.
* autoconf.m4: Rename as...
* lib/autoconf/autoconf.m4: this.
* m4sugar.m4: Rename as...
* lib/m4sugar/m4sugar.m4: this.
* m4sh.m4: Rename as...
* lib/m4sugar/m4sh.m4: this.
* tests/atgeneral.m4: Rename as...
* lib/autotest/general.m4: this.
* acfunctions: Rename as...
* lib/autoscan/functions: this.
* acheaders: Rename as...
* lib/autoscan/headers: this.
* acidentifiers: Rename as...
* lib/autoscan/identifiers: this.
* aclibraries: Rename as...
* lib/autoscan/libraries: this.
* acmakevars: Rename as...
* lib/autoscan/makevars: this.
* acprograms: Rename as...
* lib/autoscan/programs: this.
2001-08-01 13:46:22 +00:00
Akim Demaille
722c1a86a0 Require a perfect divert push/pop balance.
* m4sugar.m4 (m4_divert, m4_divert_push, m4_divert_pop): Keep
track of them in m4_divert_stack.
(m4_divert_pop): Accept the expected current diversion as
argument and m4_fatal if incorrect, or if there is nothing to pop.
(globally): Specify the known m4_divert_pop.
Preserve symbolic values when possible.
* acgeneral.m4: No longer push the first diversion.
Specify the known m4_divert_pop.
(AC_PLAIN_SCRIPT): When m4_divert_push a diversion, m4_wrap its
pop.
(AC_INIT): Run AC_PLAIN_SCRIPT first, not last.
* tests/m4sh.at (AS_DIRNAME & AS_DIRNAME_SED): Can't use m4_defun
without m4_init.
* m4sugar.m4: Likewise.
2001-01-18 09:16:08 +00:00
Akim Demaille
8a3c7070bd * m4sugar.m4 (m4_undefine, m4_popdef): Don't tolerate undefined
arguments.
(_m4_expansion_stack): Rename as...
(m4_expansion_stack): this, and change its value: instead of using
the pushdef stack to stack each *line* of the stack, each
definition contains the whole stack.  I.e., to display the whole
stack, instead of popdefing and displaying each definition, just
display the current definition.
(m4_expansion_stack_push, m4_expansion_stack_pop): New.
* tests/atspecific.m4 (AT_CHECK_AUTOCONF): Let $2 be the expected
exit status.
* tests/m4sugar.m4 (m4_require: circular dependencies): New test.
2001-01-17 15:26:42 +00:00
Akim Demaille
cd7cd7bf31 * autoconf.sh: Promote configure.ac' over configure.in'.
* autoreconf.sh: Likewise.
* autoheader.sh: Ditto.
* autoupdate.sh: Similarly.
* doc/autoconf.texi: Adjust.
* tests/atspecific.m4: Be sure to remove configure.in.
Adjust the test suite to use `configure.ac'.
2000-12-23 10:11:57 +00:00
Akim Demaille
6804b0e12a * tests/atgeneral.m4 (AT_CHECK): Make exit status report more
visible.
* tests/atspecific.m4 (AT_CHECK_AUTOCONF): Support FLAGS, STDOUT
and STDERR.
(AT_CHECK_CONFIGURE): Support plenty, cleanup defs when needed.
Spread their use in the whole suite.
Simplify a few AT_CLEANUPs.
2000-12-19 08:15:48 +00:00
Akim Demaille
a8c122d0f2 Provide a means to display banners in the test suite.
* tests/atgeneral.m4 (AT_INIT): Initialize AT_banner_ordinal.
Execute the epilogue of the tests only if a test was run.
Don't built the value of `at_tests_all' by a for loop: expand
AT_TESTS_ALL.
(AT_SETUP): Build AT_TESTS_ALL.
(AT_BANNER): New.
Adjust all the former banners to use it.
(AT_CHECK): Don't trace the decoding of $?.
2000-11-29 10:12:05 +00:00
Akim Demaille
a9e30cc83a Move Autotest on top of M4sh.
* tests/atgeneral.m4: Import M4sh.
Adjust the differences on the names of the builtins (define etc.).
(AT_CASE): Remove, use m4_case.
(AT_SETUP): Don't use `AT_group_description', `$1' is OK.
* tests/atspecific.m4 (m4_for, m4_foreach): Remove, use those of
M4sugar.
* tests/m4sugar.at: Strengthen the quotation and adjust to the new
macro names.
* tests/m4sh.at: Ditto.
* tests/torture.at: Ditto.
* tests/base.at: Ditto.
* m4sh.m4: Import M4sugar.
* autoconf.m4: Don't import M4sugar, M4sh does.
2000-11-23 09:45:48 +00:00
Pavel Roskin
167526b3b2 * tests/m4sugar.at (m4_warn): Adjusted to accept stack dump when
-Werror is used.
2000-11-09 18:50:55 +00:00
Akim Demaille
43703ea9aa * m4sugar.m4 (m4_location): When using its value, don't use
`m4_defn', since m4_location is not a variable, it's a macro which
expands to __file__:__line__.
* tests/m4sugar.at (m4_warn): New test.
2000-11-03 15:21:14 +00:00
Akim Demaille
d95de46af1 * m4sugar.m4 (m4_rename_m4, m4_copy_unm4): New macros.
Use them.
(debugfile, debugmode, m4exit, m4wrap, maketemp, patsubst, regexp)
(substr, translit, m4_wrap): Rename as...
(m4_debugfile, m4_debugmode, m4_exit, m4_wrap, m4_maketemp)
(m4_patsubst, m4_regexp, m4_substr, m4_translit, m4_text_wrap): these.
Adjust all dependencies.
* acgeneral.m4: Adjust.
* tests/m4sugar.at: Adjust.
* autoconf.m4 (m4exit, patsubst, regexp, substr, translit):
Reestablish them.
2000-11-03 08:53:26 +00:00
Akim Demaille
5ec791a2d5 * shell.m4: Rename as...
* m4sh.m4: this.
* tests/m4sugar.m4, tests/shell.m4, tests/torture.m4: Rename as...
* tests/m4sugar.at, tests/m4sh.at, tests/torture.at: these.
* tests/semantics.m4, tests/base.m4, tests/suite.m4: Rename as...
* tests/semantics.at, tests/base.at, tests/suite.at: these.
* tests/tools.m4, tests/update.m4, tests/syntax.m4: Rename as...
* tests/tools.at, tests/update.at, tests/syntax.at: these.
* tests/mktests.sh: Adjust the output file names.
2000-10-26 09:52:34 +00:00