Paolo Bonzini [Fri, 10 Oct 2008 06:20:33 +0000 (08:20 +0200)]
use a shell function for AS_MKDIR_P
2008-10-10 Paolo Bonzini <bonzini@gnu.org>
* m4sugar/m4sh.m4 (_AS_MKDIR_P): New, from AS_MKDIR_P. Adjust
meaning of as_mkdir_p to be `false' or a full `mkdir -p' command.
(AS_MKDIR_P): Just dispatch to as_func_mkdir_p.
(_AS_PREPARE): Define shell functions.
(_AS_MKDIR_P_PREPARE): Set as_mkdir_p according to the above change.
Define shell functions.
Eric Blake [Thu, 9 Oct 2008 16:58:11 +0000 (10:58 -0600)]
Only prepare $as_me if it will be used.
* lib/m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Avoid unconditional
preparation.
(_AS_ECHO_LOG): Depend on $LINENO preparation.
(AS_MESSAGE): Depend on $as_me preparation.
(AS_TMPDIR): Use AS_ERROR, rather than a hand-rolled copy.
Paolo Bonzini [Thu, 9 Oct 2008 13:13:10 +0000 (15:13 +0200)]
more cleanup before adding shell functions
2008-10-09 Paolo Bonzini <bonzini@gnu.org>
* m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Delay setting as_me
until the M4SH-INIT diversion using _AS_ME_PREPARE.
(_AS_PREPARE): Invoke _AS_EXPR_PREPARE before _AS_BASENAME_PREPARE
and _AS_DIRNAME_PREPARE, and _AS_BASENAME_PREPARE and _AS_ME_PREPARE
before _AS_LINENO_PREPARE.
(AS_PREPARE): Include all the AS_REQUIREs manually.
(_AS_ME_PREPARE): New.
(_AS_LINENO_PREPARE): Use m4_defun.
Paolo Bonzini [Thu, 9 Oct 2008 13:28:06 +0000 (15:28 +0200)]
avoid problems when _AS_BASENAME_EXPR are invoked before _AS_EXPR_PREPARE
2008-10-09 Paolo Bonzini <bonzini@gnu.org>
* m4sugar/m4sh.m4 (_AS_BASENAME_EXPR, _AS_DIRNAME_EXPR): Do not
require _AS_EXPR_PREPARE.
(_AS_BASENAME_PREPARE, _AS_DIRNAME_PREPARE): Do it here.
(_AS_PREPARE): Add _AS_BASENAME_PREPARE.
Eric Blake [Wed, 8 Oct 2008 15:33:48 +0000 (09:33 -0600)]
Resync from gnulib.
* cfg.mk (cvs_executable_files, cvs_files): Rewrite...
(fetch): ...into new target.
(executable-update): Delete, now that it is unused.
* maint.mk (update, local_updates, cvs_files, gnulib_repo)
(wget-update, cvs-update): Likewise.
* HACKING (Update the foreign files): Document new procedure.
* GNUmakefile: Resync from upstream, via new 'make fetch'.
* build-aux/config.guess: Likewise.
Eric Blake [Wed, 8 Oct 2008 02:41:13 +0000 (20:41 -0600)]
Avoid repeating required shell tests in suggested set.
* lib/m4sugar/m4sh.m4 (_AS_DETECT_REQUIRED, _AS_DETECT_SUGGESTED):
Use m4_set, rather than m4_expand_once/m4_append.
(_AS_DETECT_SUGGESTED): Adjust to new storage layout, and filter
required tests out of suggested tests.
Reported by Paolo Bonzini.
Ralf Wildenhues [Wed, 8 Oct 2008 05:24:06 +0000 (07:24 +0200)]
Do not write to testsuite log fd before initialization.
* lib/autotest/general.m4 (AS_MESSAGE_LOG_FD, AT_JOB_FIFO_FD):
Define fds only when initializing the log fd so early error
messages do not try to write to it.
* tests/autotest.at (Startup error messages): New test.
* NEWS: Document this 2.63 regression.
Eric Blake [Tue, 23 Sep 2008 12:57:15 +0000 (06:57 -0600)]
Add m4_default_quoted.
* lib/m4sugar/m4sugar.m4 (m4_default_quoted): New macro.
(m4_for, m4_expand_once, m4_text_wrap, m4_text_box): Use it.
* doc/autoconf.texi (Conditional constructs): Document it.
* NEWS: Likewise.
Eric Blake [Tue, 7 Oct 2008 02:06:00 +0000 (20:06 -0600)]
Fix build with case-insensitive make, again.
* Makefile.am (pkgdata_DATA): Protect by MAKE_CASE_SENSITIVE.
Reported via Keith Marshall, originally by newthinker in
<http://thread.gmane.org/gmane.comp.gnu.mingw.user/27725>.
Ralf Wildenhues [Fri, 3 Oct 2008 05:14:24 +0000 (07:14 +0200)]
Fix more testsuite hang corner cases.
* lib/autotest/general.m4: Use the serial code path if no test
is to be run.
* tests/autotest.at (parallel test execution): Test -j and -jN
with `-k notmatched'.
Eric Blake [Thu, 2 Oct 2008 15:02:37 +0000 (09:02 -0600)]
Document more binary file portability traps.
* doc/autoconf.texi (Limitations of Usual Tools) <sed>: Remind
reader that NUL and sed don't always mix.
<tr>: Mention Solaris /usr/ucb/tr bug with \0.
Ralf Wildenhues [Thu, 2 Oct 2008 05:48:51 +0000 (07:48 +0200)]
Implement parallel Autotest test execution: testsuite --jobs.
* lib/autotest/general.m4 (AT_JOB_FIFO_FD): New macro.
(AT_INIT): <at_jobs>: New variable.
Accept -j, -jN, --jobs[=N], document them in --help output.
Implement parallel driver loop using a FIFO, enabled with --jobs
and if mkfifo works; otherwise, fall back to sequential loop.
(AT_SETUP): Store, do not output summary progress line if
parallel.
* tests/autotest.at (parallel test execution, parallel truth)
(parallel fallacy, parallel skip): New tests.
* doc/autoconf.texi (testsuite Invocation): Document -j, --jobs,
the mkfifo requirement, and that --errexit may cause concurrent
jobs to finish.
* NEWS: Update.
Eric Blake [Sat, 6 Sep 2008 22:19:55 +0000 (16:19 -0600)]
Formatting tweaks to the manual.
* doc/autoconf.texi (Introduction, Systemology)
(File System Conventions, Portable C and C++)
(Floating Point Portability): Allow URLs to split as needed.
(Indices): Add entries, to work around texinfo bug on indices that
start too close to a page break.
(Particular Functions): Mention ftello.
(Introduction, Language Choice): Use @enddots at sentence end.
Eric Blake [Tue, 2 Sep 2008 12:53:38 +0000 (06:53 -0600)]
Resync from gnulib.
* cfg.mk (cvs_executable_files, cvs_files): Update list of files,
although for now, they are still manually sync'd.
* build-aux/gnupload: Update.
* build-aux/config.sub: Likewise.
* GNUmakefile: Likewise.
Eric Blake [Sat, 6 Sep 2008 19:20:58 +0000 (13:20 -0600)]
Relax tone when warning about cross-compiler names.
* lib/autoconf/programs.m4 (_AC_TOOL_WARN): Support cross-compiles
with poorly named tools; the issue has been reported too many
times in the last four years to pull support.
* doc/autoconf.texi (Specifying Names, Generic Programs): Update
documentation accordingly.
* THANKS: Update.
Reported by Josef Tran and others, wording suggested by Ralf
Wildenhues.
Eric Blake [Tue, 2 Sep 2008 01:36:23 +0000 (19:36 -0600)]
Improve AC_C_BIGENDIAN.
* doc/autoconf.texi (C Compiler) <AC_C_BIGENDIAN>: Mention that
universal builds require a config header.
* lib/autoconf/c.m4 (AC_C_BIGENDIAN): Enhance comments. Check
AH_HEADER at the last possible moment, so that users can use
AC_CONFIG_HEADER after this macro.
Reported by Stepan Kasal.
Eric Blake [Tue, 26 Aug 2008 21:29:17 +0000 (15:29 -0600)]
Improve INSTALL formatting.
* doc/install.texi [!autoconf]: Ensure first paragraphs are
indented like all others in a plain text rendering.
* Makefile.am ($(srcdir)/INSTALL): Ensure plaintext formatting.
Reported by Bruno Haible.
Stepan Kasal [Thu, 22 May 2008 15:52:28 +0000 (17:52 +0200)]
Check for case sensitive make.
* m4/make-check.m4 (AC_PROG_MAKE_CASE_SENSITIVE): New macro,...
* configure.ac: ... called here.
* Makefile.am ($(abs_srcdir)/INSTALL, INSTALL): Return to...
($(srcdir)/INSTALL): ...this, but enclose the rule in
"if MAKE_CASE_SENSITIVE".
Eric Blake [Tue, 26 Aug 2008 15:07:01 +0000 (09:07 -0600)]
Don't let frozen __m4_version__ break downgrade to m4 1.4.x.
* bin/autom4te.in: Adjust comments, now that we rely on 1.4.5+.
(files_to_options): Avoid inheriting __m4_version__ from frozen
file if current M4 does not support it.
Eric Blake [Mon, 25 Aug 2008 22:26:27 +0000 (16:26 -0600)]
Adjust to recent m4 1.6 change to support m4_debugmode(d).
* lib/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine): Move
freeze-time decision of using faster 1.6 implementation...
(m4_init): ...to a runtime decision, and add use of new debugmode
flag.
Eric Blake [Fri, 22 Aug 2008 04:17:33 +0000 (22:17 -0600)]
Avoid extra side effects in m4sugar list expansion.
* lib/m4sugar/m4sugar.m4 (m4_mapall_sep, m4_list_cmp): Wrap
around...
(_m4_mapall_sep, _m4_list_cmp_raw): ...new helpers, to avoid
duplicate side effects.
(m4_version_compare): Adjust caller.
* lib/m4sugar/foreach.m4 (m4_list_cmp): Rename...
(_m4_list_cmp_raw): ...to match m4sugar.
* doc/autoconf.texi (Looping constructs): Document the behavior of
side effects.
* tests/m4sugar.at (M4 loops, m4@&t@_map, m4@&t@_version_compare):
Ensure only one side effect.
(recursion): Fix test typo.
Reported by Ralf Wildenhues.
Eric Blake [Wed, 9 Apr 2008 18:09:45 +0000 (12:09 -0600)]
Tweak wording about SHELL in Makefile.
* doc/autoconf.texi (The Make Macro SHELL): Stronger wording on
the importance of proper SHELL settings.
Reported by Bruno Haible, in
http://lists.gnu.org/archive/html/bug-libtool/2008-04/msg00029.html.
Ralf Wildenhues [Wed, 20 Aug 2008 19:10:17 +0000 (21:10 +0200)]
Avoid timestamp races for updated input.
* tests/m4sh.at (AS_IF and AS_CASE): Use `autom4te --force' for
second script. Set the expansion limit back to 1000.
* tests/tools.at (autotools and whitespace in file names): Add
--force for repeated invocations.
Jim Meyering [Tue, 19 Aug 2008 21:00:09 +0000 (23:00 +0200)]
Avoid shell parse errors after interrupt due to empty ``.
* doc/autoconf.texi (Shell Substitutions): Document the issue.
* lib/m4sugar/m4sh.m4 (AS_VAR_IF): New function.
* lib/autoconf/functions.m4 (AC_CHECK_FUNC): Use it in place of
"test AS_VAR_GET([...]) = yes"
* lib/autoconf/general.m4 (AC_CHECK_FILE, AC_CHECK_DECL): Likewise.
* lib/autoconf/headers.m4 (_AC_CHECK_HEADER_MONGREL): Likewise.
(_AC_CHECK_HEADER_NEW, _AC_CHECK_HEADER_OLD): Likewise.
(_AC_CHECK_HEADER_DIRENT): Likewise.
* lib/autoconf/libs.m4 (AC_CHECK_LIB): Likewise.
* lib/autoconf/types.m4 (_AC_CHECK_TYPE_NEW, AC_CHECK_MEMBER): Likewise.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Use
temporary variable to work around the issue.
* tests/foreign.at (Libtool): Quote result of command
substitution.
Eric Blake [Tue, 19 Aug 2008 04:20:37 +0000 (22:20 -0600)]
Test m4_transform without tickling shell bugs.
* tests/m4sh.at (AS@&t@_IF and AS@&t@_CASE): Relax test to
something more manageable.
* tests/m4sugar.at (recursion): Move stress test of
m4_transform_pair here.
Reported by Ralf Wildenhues.
Eric Blake [Fri, 15 Aug 2008 13:06:39 +0000 (07:06 -0600)]
Fix m4_map regression from 2007-10-16.
* lib/m4sugar/m4sugar.m4 (_m4_apply): New macro.
(m4_map): Ignore empty sublists. For a list consisting of only an
empty sublist, this restores 2.61 behavior of being a no-op.
(m4_map_sep): Likewise, and expand separator.
(m4_mapall, m4_mapall_sep): New macros, to regain 2.62 behavior.
(_m4_map): Rewrite, to be common base for all four variants.
* lib/m4sugar/foreach.m4 (_m4_map): Adjust to new prototype.
* tests/m4sugar.at (m4@&t@_map): Add tests.
* doc/autoconf.texi (Looping constructs) <m4_map>: Document new
macros, and mention ramifications of expanded separator.
* NEWS: Mention the change.
Eric Blake [Wed, 13 Aug 2008 15:12:28 +0000 (09:12 -0600)]
Implement m4_transform_pair, to speed up AS_IF.
* lib/m4sugar/m4sugar.m4 (m4_transform, m4_transform_pair): New
macros, undocumented for now.
* lib/m4sugar/foreach.m4 (m4_transform, m4_transform_pair): Also
the m4 1.4.x counterparts.
* lib/m4sugar/m4sh.m4 (AS_IF, AS_CASE): Use it.
* tests/m4sh.at (AS@&t@_IF and AS@&t@_CASE): Test it.
Ralf Wildenhues [Thu, 14 Aug 2008 21:29:23 +0000 (23:29 +0200)]
Fix AC_*_TARGET_TOOL macros.
* lib/autoconf/programs.m4 (AC_PATH_TARGET_TOOL)
(AC_CHECK_TARGET_TOOL, AC_CHECK_TARGET_TOOLS): Require, do not
warn about previous AC_CANONICAL_TARGET.
(AC_CHECK_TARGET_TOOL): Add missing `$' making the macro
unusable in the non-cross-compiling case.
* NEWS, THANKS: Update.
Report by Dave Erickson.
Eric Blake [Tue, 12 Aug 2008 21:23:56 +0000 (15:23 -0600)]
Optimize m4_bmatch.
* lib/m4sugar/foreach.m4 (m4_bmatch): Provide linear
implementation for m4 1.4.x.
* tests/m4sugar.at (m4@&t@_bmatch): New test.
(recursion): Test the linear nature.
* NEWS: Document the fix.
Eric Blake [Mon, 4 Aug 2008 12:56:53 +0000 (06:56 -0600)]
Fix autoheader 2.62 regression on AC_DEFINE([__EXTENSIONS__]).
* lib/autoconf/specific.m4 (AC_USE_SYSTEM_EXTENSIONS): Use a
unique key for the AH_VERBATIM.
* tests/c.at (AC_USE_SYSTEM_EXTENSIONS): New test.
* NEWS: Mention the fix.
Reported by Andreas Schwab, analyzed by Stepan Kasal.
Eric Blake [Wed, 30 Jul 2008 22:44:03 +0000 (16:44 -0600)]
Add linear m4_cond for m4 1.4.x.
* lib/m4sugar/m4sugar.m4 (m4_cond): Split into...
(_m4_cond): ...this, for fewer macros per iteration.
* lib/m4sugar/foreach.m4 (_m4_cond): New implementation.
* tests/m4sugar.at (recursion): Test it.
* NEWS: Document the linear guarantee.
Eric Blake [Wed, 6 Aug 2008 15:24:09 +0000 (09:24 -0600)]
AC_C_CHAR_UNSIGNED is not strictly necessary.
* doc/autoconf.texi (C Compiler) <AC_C_CHAR_UNSIGNED>: Mention a
portable alternative to this macro.
* THANKS: Update.
Reported by Hallvard B Furuseth.
Ralf Wildenhues [Mon, 4 Aug 2008 06:02:53 +0000 (08:02 +0200)]
Fix AC_CONFIG_FILES([$var]) 2.62 regression.
* lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS): Flatten
whitespace in $ac_config_files and $ac_config_headers.
* tests/torture.at (Parameterized AC_CONFIG_FILES): New test.
Report by Andreas Schwab and Per Øyvind Karlsen.
* THANKS: Update.
Eric Blake [Wed, 30 Jul 2008 02:34:06 +0000 (20:34 -0600)]
Add linear m4_bpatsubsts for m4 1.4.x.
* lib/m4sugar/m4sugar.m4 (m4_bpatsubsts): Match documentation
about anchors, even for only one substitution.
* lib/m4sugar/foreach.m4 (_m4_bpatsubsts): New implementation.
* doc/autoconf.texi (Conditional constructs) <m4_bpatsubsts>:
Clarify behavior with regard to quoting.
* tests/m4sugar.at (recursion): Test scaling of m4_bpatsubsts.
(m4@&t@_bpatsubsts): New test.
* NEWS: Document the linear guarantee.
Eric Blake [Tue, 29 Jul 2008 14:28:01 +0000 (08:28 -0600)]
One more m4_list_cmp tweak.
* lib/m4sugar/m4sugar.m4 (_m4_list_cmp_1): Don't defer shift.
* lib/m4sugar/foreach.m4 (m4_list_cmp): Fix comment.
* tests/m4sugar.at (recursion): Test both directions of list
disparity.
Eric Blake [Tue, 29 Jul 2008 13:12:26 +0000 (07:12 -0600)]
Add m4_reverse, and improve m4_list_cmp.
* lib/m4sugar/m4sugar.m4 (m4_reverse): New macro.
(m4_list_cmp): Rewrite to give linear behavior with M4 1.6 on an
m4_reverse'd list.
* lib/m4sugar/foreach.m4 (m4_reverse): Add the M4 1.4.x
counterpart.
* tests/m4sugar.at (recursion): Test it.
* doc/autoconf.texi (Evaluation Macros) <m4_reverse>: Document
it.
(Text processing Macros) <m4_append>: Cross-reference to m4_set.
* NEWS: Mention new macro.
Eric Blake [Mon, 28 Jul 2008 17:24:03 +0000 (11:24 -0600)]
Avoid _m4_shiftn for m4 1.6 speedup.
* lib/m4sugar/m4sugar.m4 (m4_foreach, _m4_foreach, m4_map)
(_m4_map, m4_map_sep): Rewrite recursion to use one less m4_if.
* lib/m4sugar/foreach.m4 (_m4_map): Accomodate changed signature.
Eric Blake [Mon, 28 Jul 2008 12:35:34 +0000 (06:35 -0600)]
Implement O(n) unique element set creation.
* lib/m4sugar/m4sugar.m4 (m4_set_add, m4_set_add_all)
(m4_set_contains, m4_set_contents, m4_set_delete)
(m4_set_difference, m4_set_dump, m4_set_empty, m4_set_foreach)
(m4_set_intersection, m4_set_list, m4_set_listc, m4_set_remove)
(m4_set_size, m4_set_union): New macros.
* lib/m4sugar/foreach.m4 (m4_set_add_all): Add O(n) fallback for
m4 1.4.x.
* lib/autoconf/general.m4 (_AC_INIT_DEFAULTS, AC_SUBST): Use
new m4_set API for the set most likely to be large.
* doc/autoconf.texi (Set manipulation Macros): New node.
* NEWS: Mention new macros.
* tests/m4sugar.at (m4@&t@_set): New test.
Eric Blake [Fri, 25 Jul 2008 21:17:38 +0000 (15:17 -0600)]
Provide O(n) replacement macros for M4 1.4.x.
* lib/m4sugar/foreach.m4: New file.
(m4_foreach, m4_case, _m4_shiftn, m4_do, m4_dquote_elt, _m4_map)
(m4_join, m4_joinall, m4_list_cmp, _m4_minmax): Replace m4sugar
macros based on $@ recursion [fast on M4 1.6, but quadratic on M4
1.4.x] with versions based on m4_for/m4_foreach [slow on 1.6, but
linear on 1.4.x].
* lib/m4sugar/m4sugar.m4 (m4_init): Dynamically load new file if
older M4 is assumed.
(m4_map_sep): Optimize.
(m4_max, m4_min): Refactor, by adding...
(_m4_max, _m4_min, _m4_minmax): ...more efficient helpers.
(m4_defn, m4_popdef, m4_undefine): Use foreach recursion.
* lib/m4sugar/Makefile.am (dist_m4sugarlib_DATA): Distribute new
file.
* tests/m4sugar.at (M4 loops): Add a stress test that takes
forever if m4_foreach and friends are quadratic.
* NEWS: Mention this.
Eric Blake [Fri, 18 Jul 2008 18:05:43 +0000 (12:05 -0600)]
Use warnings from m4 when available.
* lib/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine): Don't
define slower wrapper if m4 will warn on our behalf; key off of
__m4_version__, added alongside the new warnings in m4 1.6.
* tests/m4sugar.at (m4@&t@_defn): New test.
Improve documentation of config.h.in template rules.
* doc/autoconf.texi (Header Templates): Mention rules on comments
and whitespace, and that the user cannot rely on #undef to survive
through config.status.
Eric Blake [Mon, 14 Jul 2008 16:13:28 +0000 (10:13 -0600)]
Tighten bound of potential speed of m4_append.
* doc/autoconf.texi (Text processing Macros) <m4_append>
<m4_prepend>: If m4 is fixed, m4_append can be linear rather than
O(n log n).
* lib/m4sugar/m4sugar.m4 (m4_append, m4_append_uniq): Fix comments.
Analysis by Bruno Haible.
Eric Blake [Fri, 11 Jul 2008 17:14:46 +0000 (11:14 -0600)]
Inherit improvements from bison's fork of m4sugar.
* lib/m4sugar/m4sugar.m4 (m4_PACKAGE_VERSION): Ignore failure to
find version.texi, since bison does not provide it.
(m4_prepend): Add new macro, from bison.
(m4_prepend_uniq, m4_prepend_uniq_w): Add new macros, for
completeness.
(_m4_append_uniq): Rename...
(_m4_grow_uniq_1): ...to this to share implementation, and
optimize initial assignment.
(m4_append_uniq_w): Adjust caller.
* NEWS: Document new macros.
* doc/autoconf.texi (Text processing Macros) <m4_append>: Mention
speed consideration.
<m4_prepend>: Document the new prepend variants.
* tests/m4sugar.at (m4@&t@_prepend): New test.