Eric Blake [Sat, 3 Nov 2007 13:20:47 +0000 (07:20 -0600)]
Adjust version comparison to account for git snapshot numbers.
* lib/m4sugar/m4sugar.m4 (_m4_version_unletter): Also treat - as a
component separator.
* doc/autoconf.texi (Number processing Macros)
<m4_version_compare>: Document this change.
* tests/m4sugar.at (m4@&t@_version_compare): Test it.
Bruno Haible [Wed, 31 Oct 2007 02:09:54 +0000 (19:09 -0700)]
* lib/autoconf/types.m4 (_AC_TYPE_LONG_LONG_SNIPPET): New macro,
extracted from AC_TYPE_LONG_LONG_INT and AC_TYPE_UNSIGNED_LONG_LONG_INT.
(AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT): Use it.
Fixes problem with Sun C 5.[0-8] in 32-bit mode, reported in
<http://lists.gnu.org/archive/html/autoconf-patches/2007-10/msg00210.html>
Suggested by Paul Eggert.
Jim Meyering [Sat, 27 Oct 2007 19:57:32 +0000 (21:57 +0200)]
README-hacking: Recommend running autoreconf -vi.
* GNUmakefile (dummy): Use autoreconf -i, with appropriate PATH,
so that we use just-built tools when they're available.
Suggestions from Ralf Wildenhues.
Jim Meyering [Mon, 22 Oct 2007 17:54:52 +0000 (19:54 +0200)]
Make inter-release --version output more useful.
Now, each unofficial build has a version "number" like 2.61a-19-58dd,
which indicates that it is built using the 19th change set
(in _some_ repository) following the "v2.61a" tag, and that 58dd
is a prefix of the commit SHA1.
* build-aux/git-version-gen: New file.
* configure.ac: Run it to set the version.
(AM_INIT_AUTOMAKE): Don't check NEWS here.
* Makefile.am (dist-hook): Arrange so that .version appears only
in distribution tarballs, never in a checked-out repository.
* .gitignore: Add .version here, too. Just in case.
* tests/Makefile.am ($(srcdir)/package.m4): Depend on Makefile,
not configure.ac, now that the version number changes automatically.
Ensure that $(VERSION) is up to date for dist-related targets.
* GNUmakefile: Arrange to rerun autoconf, if the version reported by
git-version-gen doesn't match $(VERSION), but only for dist targets.
Jim Meyering [Sat, 27 Oct 2007 10:14:35 +0000 (12:14 +0200)]
Remove all generated files from version control.
* aclocal.m4: Remove.
* configure: Remove.
* Makefile.in: Remove, along with all other Makefile.in in subdirs.
* .gitignore: Add aclocal.m4, configure and Makefile.in. Sort.
* README-hacking: New file: how to build from just-checked-out sources.
Paul Eggert [Mon, 22 Oct 2007 16:55:30 +0000 (09:55 -0700)]
Don't check for bug in HP-UX 11.00 cpp.
* lib/autoconf/types.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT):
Use -1ull rather than -1u, since that causes problems with gnulib; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-10/msg00329.html>.
Ralf Wildenhues [Sun, 21 Oct 2007 18:15:38 +0000 (20:15 +0200)]
Fix `Deep Package' test failure on FreeBSD.
* tests/torture.at (Deep Package): Do not add `.' to $PATH
unnecessarily. Do not try running `/bin/sh configure' with a
configure script to be found in $PATH, if the shell does not do
this resolution. Fixes test failure on FreeBSD.
Ralf Wildenhues [Sun, 21 Oct 2007 10:42:09 +0000 (12:42 +0200)]
Validate testsuite range arguments.
* lib/autotest/general.m4 (Defaults): Validate input ranges ...
<at_func_validate_ranges>: ... using this new function.
* tests/autotest.at (Keywords and ranges): Test invalid ranges.
Test --list with ranges and keywords.
(Banners): Remove one now-failing test.
Eric Blake [Fri, 19 Oct 2007 12:27:46 +0000 (06:27 -0600)]
Improve AT_BANNER handling.
* lib/autotest/general.m4 (BANNERS): New named diversion.
(TESTS_END): Diversion no longer used.
(AT_INIT) <at_func_banner, BANNERS>: Factor all banners into a
shell function, which prints only as needed, using an associative
array of banner text from a special diversion.
<PARSE_ARGS_END>: No longer need awk to find banners.
<TESTS>: Banners are no longer processed by main driver loop, so
we no longer need case statement.
(AT_BANNER): Rewrite to populate new diversion.
(AT_SETUP): Each test invokes its own banner. No output is needed
to the TESTS diversion.
* doc/autoconf.texi (Writing Testsuites): Document slight
semantics change.
* tests/autotest.at (AT_BANNERS): Enhance test.
* NEWS: Document AT_BANNER.
Eric Blake [Thu, 18 Oct 2007 15:05:09 +0000 (09:05 -0600)]
Fix AT_TESTED, AT_KEYWORDS.
* lib/m4sugar/m4sugar.m4 (m4_append_uniq): Warn if separator
occurs in string, as duplicates may be added.
(_m4_append_uniq): New helper macro.
(m4_append_uniq_w): New macro.
* lib/autotest/general.m4 (AT_TESTED, AT_KEYWORDS): Fix
duplication bug by using new macro.
(AT_INIT) <at_tested>: Restore newline separators. Invoke tested
programs with stdin redirected, so programs that don't
understand --version won't try to behave interactively.
* tests/autotest.at (Tested programs): Catch this bug.
* tests/m4sugar.at (m4@&t@_append): Test new macro.
* tests/local.at (AT_TESTED): Add m4, perl.
* doc/autoconf.texi (Text processing Macros): Document
m4_append_uniq_w, and update text on m4_append.
* NEWS: Document the addition.
Eric Blake [Thu, 18 Oct 2007 02:59:01 +0000 (20:59 -0600)]
Function cleanup.
* lib/autotest/general.m4 (_AT_CREATE_DEBUGGING_SCRIPT): Convert
from m4 macro...
(AT_INIT) <at_func_create_debugging_script>: ...to shell
function.
(AT_INIT): Defer function declarations until after --help,
--version. Format functions consistently, trying to fit in 80
columns.
(TEST_FUNCTIONS): Based on recent changes, rename...
(TEST_GROUPS): ...to this.
Ralf Wildenhues [Wed, 17 Oct 2007 19:12:36 +0000 (21:12 +0200)]
Autotest: do not use shell functions for individual tests.
* lib/autotest/general.m4 (AT_INIT) <at_func_test>: Merely
extract the source test source, do not invoke it.
(AT_SETUP, AT_CLEANUP): Source test code outside shell function.
* tests/autotest.at (Fallacy): Actually let the inner suite fail,
expect exit status of 1.
* tests/autotest.at (Skip): New test, for bogus zsh exit status.
Ralf Wildenhues [Tue, 16 Oct 2007 21:50:03 +0000 (23:50 +0200)]
Fix `configure --help=recursive' in unconfigured/read-only trees.
* lib/m4sugar/m4sh.m4 (_AS_LN_S_PREPARE): Avoid errors when `.'
is not writable, use 'cp -p' in this case, in the hope that it
will not actually be needed. Still try removing files, in case
of other write errors.
* lib/autoconf/general.m4 (_AC_INIT_SRCDIR): For ac_confdir,
use $as_myself, not $0.
(_AC_INIT_HELP): For --help=recursive, if the subdir does not
exist, try again in the the source tree. This change assumes
that the subpackage configure script is capable of running
--help=recursive in the source tree.
* tests/torture.at (Configuring subdirectories, Deep Package):
Adjust tests to expose both issues, also try invocation as
`sh configure ...' and plain `configure ...' with PATH adjusted.
* NEWS, THANKS: Update.
Report by Hans Ulrich Niedermann.
Paul Eggert [Tue, 16 Oct 2007 20:25:57 +0000 (13:25 -0700)]
Check for 64-bit int errors in HP-UX 10.20 preprocessor.
Problem reported by H.Merijn Brand in
<http://lists.gnu.org/archive/html/bug-tar/2007-10/msg00018.html>.
* lib/autoconf/types.m4 (AC_TYPE_LONG_LONG_INT):
(AC_TYPE_UNSIGNED_LONG_LONG_INT):
Check that preprocessor handles 64-bit ints, too.
Eric Blake [Tue, 16 Oct 2007 18:00:00 +0000 (12:00 -0600)]
Fix m4_map, and add some more utility macros.
* lib/m4sugar/m4sugar.m4 (m4_apply, m4_count, m4_dquote_elt)
(m4_echo, m4_make_list): New documented macros.
(_m4_quote, _m4_shift2): New helper macros.
(m4_map): Change semantics to allow calling macro without
arguments.
(m4_map_sep): Likewise. Also change semantics to quote separator,
to match m4_join and m4_append.
(m4_version_unletter): Fix use of m4_map.
* doc/autoconf.texi (Evaluation Macros): Document m4_apply,
m4_count, m4_dquote_elt, m4_echo, m4_make_list.
(Text processing Macros): Mention m4_dquote as a faster
alternative to joining with commas.
(Looping constructs): Document m4_map, m4_map_sep.
* NEWS: Mention new macros.
Eric Blake [Tue, 16 Oct 2007 12:22:56 +0000 (06:22 -0600)]
A few more m4sugar improvements, to benefit libtool.
* lib/m4sugar/m4sugar.m4 (m4_bpatsubsts, _m4_shiftn): Reduce size
of expansion by avoiding extra uses of $@.
(m4_shiftn): Avoid extra dnl, and forbid shifting by 0.
(_m4_cdr): New helper macro.
(_m4_map, m4_map_sep): Use it to reduce size of expansion.
(_m4_shift3): New helper macro.
(_m4_foreach): Swap argument order, and use new macro to reduce
size of expansion.
* doc/autoconf.texi (Looping constructs) <m4_shiftn>: Mention that
count must be positive.
Eric Blake [Mon, 15 Oct 2007 18:18:24 +0000 (12:18 -0600)]
Enhance AS_HELP_STRING.
* lib/m4sugar/m4sugar.m4 (m4_text_wrap): Don't expand arguments,
and reduce number of expansions.
* lib/m4sugar/m4sh.m4 (AS_HELP_STRING): Rework to use m4_expand,
and to take indent and wrap column numbers.
* tests/m4sh.at (AS@&t@_HELP_STRING): Update the test.
* doc/autoconf.texi (Pretty Help Strings): Document details about
arguments.
(Text processing Macros): Minor tweaks.
* NEWS: Document this change.
Eric Blake [Mon, 8 Oct 2007 17:53:00 +0000 (11:53 -0600)]
Fix 2007-10-03 regression with AT_SETUP([a, b]).
* lib/m4sugar/m4sugar.m4 (m4_expand): New macro.
* lib/autotest/general.m4 (AT_SETUP): Use it to preserve
whitespace after single-quoted comma.
* tests/autotest.at (AT_CHECK_AT_TITLE_CHAR): Test this.
* NEWS: Revert caveat about semantics change on comma.
* doc/autoconf.texi (Programming in M4): Lighten the warning on
using m4sugar; it is stabilizing.
(Redefined M4 Macros): Touch up wording on M4 builtins.
(Evaluation Macros): Document m4_expand.
Eric Blake [Sat, 13 Oct 2007 13:47:46 +0000 (07:47 -0600)]
Make AC_PREREQ faster and more robust.
* lib/m4sugar/m4sugar.m4 (m4_ignore, m4_unquote): New macros.
(m4_version_prereq): Inline constant expansions.
(m4_list_cmp): Reduce number of expansions, by avoiding m4_case.
Rewrite in terms of [] list, not () list.
(_m4_list_cmp, _m4_version_unletter): New helper macros.
(m4_version_unletter): Write wrapper around new implementation to
preserve old semantics.
(m4_version_compare): Pass correct type of list, and avoid
overhead of flattening expressions too early.
(m4_do): Move to be near other quoting macros.
(m4_max, m4_min): Always result in decimal output.
* doc/autoconf.texi (Looping constructs): Add m4_car, m4_cdr.
Move m4_do...
(Evaluation Macros): ...here. Add m4_ignore, m4_unquote.
(Text processing Macros): Move m4_version_compare...
(Number processing Macros): ...to this new node; document m4_cmp,
m4_list_cmp, m4_sign, m4_max, m4_min.
* tests/m4sugar.at (m4@&t@_version_compare): Enhance test, to pick
up on bugs fixed by this patch.
* NEWS: Document new macros.
Eric Blake [Thu, 11 Oct 2007 20:17:13 +0000 (14:17 -0600)]
Some more m4sugar documentation.
* lib/m4sugar/m4sugar.m4: Clean up macro order.
* doc/autoconf.texi (Programming in M4): Lighten the warning on
using m4sugar; it is stabilizing and useful.
(Redefined M4 Macros): Touch up wording on M4 builtins; sort. Add
m4_divert, m4_undivert, __file__, __line__, __oline__.
(Diagnostics): New node, documenting m4_assert, m4_errprintn,
m4_fatal, m4_location, m4_warn.
(Diversion support): New node, documenting m4_divert_push,
m4_divert_pop, m4_divert_text, m4_divert_once.
(Text processing Macros): Sort. Add m4_flatten, m4_join,
m4_newline, m4_strip, m4_text_box, m4_text_wrap.
(Programming in M4sh, Macro Names): Document namespace
limitations. Mention that non-Automake macros should not begin
with `AM_'.
(Reporting Messages): Mark AC_DIAGNOSE, AC_WARNING, and AC_FATAL
as obsolescent.
(Printing Messages): Change cross-reference.
Eric Blake [Fri, 12 Oct 2007 15:29:10 +0000 (09:29 -0600)]
Speed up execution of subset of testsuite.
* lib/autotest/general.m4 (TEST_FUNCTIONS): New diversion.
(AT_INIT) <at_func_test>: New shell function.
(AT_INIT) <at_myself>: New variable, set to absolute $as_myself.
(AT_INIT) <at_test_source> New variable, names file that holds
current test function definition.
(AT_SETUP): Start the shell function at_func_test_#, into the
TEST_FUNCTIONS diversion.
(AT_CLEANUP): End the shell function. Simplify the TESTS
diversion to invoke the function.
Eric Blake [Wed, 10 Oct 2007 20:02:16 +0000 (14:02 -0600)]
Config header generation followup.
* lib/autoconf/general.m4 (_AC_DEFINE_Q): Check for raw newlines,
which won't work with the preprocessor nor with the awk
implementation.
* tests/torture.at (Define a newline): Test raw newline detection,
removing the XFAIL.
* doc/autoconf.texi (Defining Symbols): Document recent change to
allow backslash-newline.
* THANKS: Update.
Eric Blake [Wed, 10 Oct 2007 18:17:59 +0000 (12:17 -0600)]
Avoid some overhead from m4_defn and m4_popdef.
* lib/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine): Only
pass on first argument, since we are documented that way.
(m4_for, m4_append_uniq, m4_text_wrap): Optimize out defined-ness
check where it is safe to do so.
(m4_append): Likewise, and quote the separator.
(m4_text_box): Likewise, and avoid regex, also be robust to
expansion and quadrigraphs.
Ralf Wildenhues [Wed, 10 Oct 2007 05:18:34 +0000 (07:18 +0200)]
Use awk for config header generation.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Fix comments.
(_AC_OUTPUT_HEADERS_PREPARE): New macro. Rewrite of the config
header machinery for use with awk and placement outside the main
config.status instantiation loop. Retain multi-line defines
through backslash-newline combinations, do not split the script
any more.
(_AC_OUTPUT_HEADER): Simplify accordingly, use $AWK.
(_AC_OUTPUT_MAIN_LOOP): Call _AC_OUTPUT_HEADERS_PREPARE if
needed.
(AC_OUTPUT_MAKE_DEFS): Remove backslash-newline combinations
from define values.
* NEWS: Update.
* tests/torture.at (#define header templates): Extend test by
several more cases: white space before and after `#', macros
with parameters in config.hin and as defines, multi-line macro
values.
(Torturing config.status): Use a define value twice the length
in order to exercise the awk literal string limit.
(Substitute and define special characters): Also try special
delimiter, to exercise the special-case code.
Suggestion by Eric Lemings.
Eric Blake [Tue, 9 Oct 2007 23:14:35 +0000 (17:14 -0600)]
Improve header of bin/autoconf.
* lib/m4sugar/m4sh.m4 (AS_INIT): Add a 'generated from' notice.
* lib/autoconf/general.m4 (_AC_INIT_NOTICE): Override new notice
from M4sh.
* bin/autoconf.as: Put copyright up front in generated file.
Paul Eggert [Mon, 8 Oct 2007 22:08:10 +0000 (15:08 -0700)]
Adjust doc. to match latest gnulib.
* build-aux/texinfo.tex: Sync from gnulib.
* doc/standards.texi: Likewise.
* doc/autoconf.texi (Copying This Manual): Rename to "GNU Free
Documentation License" and remove the subsection. This simplifies
the manual a bit and is more like what other GNU projects do
nowadays.
Eric Blake [Mon, 8 Oct 2007 20:09:22 +0000 (14:09 -0600)]
Fix regression in m4_text_wrap from 2007-10-05.
* lib/m4sugar/m4sugar.m4 (m4_max, m4_min): New macros.
(m4_sign): Sort.
(m4_text_wrap): Fix off-by-one error in rewrite from m4_for to
m4_format.
* lib/autotest/general.m4 (AT_SETUP): Avoid negative width.
* tests/autotest.at (Long test title, Longer test title): Test
this fix, beyond what AS_HELP_STRING already tests.
Eric Blake [Mon, 8 Oct 2007 16:46:21 +0000 (10:46 -0600)]
Avoid m4 warnings on bad m4_format usage.
* lib/m4sugar/m4sugar.m4 (m4_text_wrap): Use %*s, in case width
evaulates to 0.
* lib/autotest/general.m4 (AT_ordinal): Likewise; also ensure that
enough arguments are provided.
Paolo Bonzini [Sat, 6 Oct 2007 09:24:26 +0000 (11:24 +0200)]
autotest speed improvements
2007-10-06 Paolo Bonzini <bonzini@gnu.org>
* lib/autotest/general.m4 (AT_INIT): Add at_func_diff_devnull,
at_func_check_skip, at_func_check_status, at_func_filter_trace,
at_func_log_failure shell functions. Use test -s to avoid
useless diff invocations.
(AT_SETUP): Define AT_captured_files to empty.
(AT_DIFF_STDERR(*), AT_DIFF_STDOUT(*)): New, extracted from _AT_CHECK.
(_AT_CHECK): Replace m4_case with m4_ifdef/m4_indir. Use all
the shell functions.
Paul Eggert [Fri, 5 Oct 2007 22:31:06 +0000 (15:31 -0700)]
Don't assume "." is writeable, for commands like "autoconf --version".
* lib/m4sugar/m4sh.m4 (_AS_PATH_SEPARATOR_PREPARE): Use a
different heuristic instead, one that doesn't rely on creating
files.
Eric Blake [Thu, 4 Oct 2007 18:29:45 +0000 (12:29 -0600)]
Provide better short-circuiting operation.
* lib/m4sugar/m4sugar.m4 (m4_cond, m4_newline): New macros.
(m4_text_wrap): Use it. Also avoid useless m4_for.
* lib/m4sugar/m4sh.m4 (_AS_QUOTE_IFELSE, AS_LITERAL_IF): Use
new macro.
(_AS_IDENTIFIER_IF): Likewise, and fix bug when $1 is [,].
* lib/autotest/general.m4 (_AT_DECIDE_TRACEABLE): Use new macros
to avoid regexps.
* doc/autoconf.texi (Redefined M4 Macros): Expand m4_if
documentation. Sort m4_mkstemp, m4_undefine. Move m4_ifndef...
(Conditional constructs): ...here, to new section. Also document
m4_cond, m4_ifval, m4_n, m4_ifvaln, m4_ifset, m4_case, m4_bmatch,
m4_bpatsubsts, and m4_default.
(Looping constructs): Document m4_shiftn, m4_shift2, m4_shift3,
m4_do.
Eric Blake [Thu, 4 Oct 2007 21:31:41 +0000 (15:31 -0600)]
Fix recent testsuite failures.
* lib/autotest/general.m4 (AT_INIT, AT_SETUP): Double-quote text
that must not be re-expanded after AS_ESCAPE.
* lib/m4sugar/m4sh.m4 (_AS_IDENTIFIER_IF): Don't expand $1 when
checking if it is an identifier.
Eric Blake [Thu, 4 Oct 2007 20:23:52 +0000 (14:23 -0600)]
Whitespace cleanup.
* lib/autotest/general.m4 (_AT_CREATE_DEBUGGING_SCRIPT): Avoid
leading whitespace, as it caused space-tab in testsuite.
(AT_INIT): Avoid trailing newlines in testsuite.
Eric Blake [Thu, 4 Oct 2007 15:43:59 +0000 (09:43 -0600)]
One more round of m4_foreach_w speedups.
* lib/m4sugar/m4sugar.m4 (m4_flatten): Only use regex if newline
is present.
(_m4_split): Avoid useless expansions inside definition. Move
argument defaulting...
(m4_split): ...here. Change alternate quote to something less
likely to appear in $1. Also, special case space as regexp...
(m4_foreach_w): ...to avoid regexp on single-term list.
(m4_default, m4_defn, m4_popdef, m4_undefine, _m4_foreach): Avoid
useless expansions inside definition.
* tests/m4sugar.at (m4@&t@_split): Add tests.