Go to file
Eric Blake dbb9fe36bf 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.

Signed-off-by: Eric Blake <ebb9@byu.net>
2008-07-25 17:42:29 -06:00
bin Ignore undefined macros, necessary with m4 1.6. 2008-07-21 16:41:10 -06:00
build-aux Prepare for release. 2008-04-05 17:04:14 -06:00
config Sync files from upstream, and pass 'make syntax-check'. 2008-04-03 06:22:48 -06:00
doc Support multiple arguments to m4_defn, m4_popdef, and m4_undefine. 2008-07-19 13:11:45 -06:00
lib Provide O(n) replacement macros for M4 1.4.x. 2008-07-25 17:42:29 -06:00
m4 Recommend the just-released M4 1.4.11. 2008-04-02 13:21:33 -06:00
man Fix version number generation in man pages. 2008-04-03 16:57:56 -06:00
tests Provide O(n) replacement macros for M4 1.4.x. 2008-07-25 17:42:29 -06:00
.cvsignore Ignore additional files, when copying cross-repository. 2007-09-20 09:06:28 -06:00
.gitattributes Sync files from upstream, and pass 'make syntax-check'. 2008-04-03 06:22:48 -06:00
.gitignore Remove two more generated files from version control. 2007-11-11 09:22:43 +01:00
.prev-version ./.prev-version: Record previous version: 2.62. 2008-04-05 17:13:26 -06:00
.x-sc_prohibit_atoi_atof Sync GNUmakefile with gnulib. 2008-03-20 07:18:23 -06:00
.x-sc_space_tab
.x-sc_sun_os_names
.x-sc_trailing_blank
.x-sc_two_space_separator_in_usage Prepare for release. 2008-04-05 17:04:14 -06:00
.x-sc_useless_cpp_parens
AUTHORS More contribution housekeeping. 2007-09-20 09:51:48 -06:00
BUGS Kill more CVS references. 2008-03-20 14:14:44 -06:00
cfg.mk Generate web docs for 2.62. 2008-04-08 15:01:38 -06:00
ChangeLog Provide O(n) replacement macros for M4 1.4.x. 2008-07-25 17:42:29 -06:00
ChangeLog.0 Grant more permissions to copying, as per the usual GNU standard these 2007-07-20 23:11:23 +00:00
ChangeLog.1 Grant more permissions to copying, as per the usual GNU standard these 2007-07-20 23:11:23 +00:00
ChangeLog.2 Grant more permissions to copying, as per the usual GNU standard these 2007-07-20 23:11:23 +00:00
configure.ac Enforce --help and --version compliance. 2008-05-12 07:45:03 -06:00
COPYING Use GPLv2+ plus exception as license for release. 2008-04-05 17:04:48 -06:00
COPYINGv3 Use GPLv2+ plus exception as license for release. 2008-04-05 17:04:48 -06:00
GNUmakefile Part two of GNUmakefile sync. 2008-07-21 21:49:58 -06:00
HACKING Update various hacking notes. 2008-04-09 10:23:26 -06:00
maint.mk Prepare for release. 2008-04-05 17:04:14 -06:00
Makefile.am Fix 'make dist' regression from 2008-05-08. 2008-06-03 13:24:37 -06:00
NEWS Provide O(n) replacement macros for M4 1.4.x. 2008-07-25 17:42:29 -06:00
README Use GPLv2+ plus exception as license for release. 2008-04-05 17:04:48 -06:00
README-alpha Reword the copyright notices to match what's suggested in GPLv3. 2007-07-20 23:11:49 +00:00
README-hacking Mention more details about git usage in bootstrap. 2008-04-15 06:56:56 -06:00
THANKS Allow lib64 as a default X library location. 2008-06-09 06:19:17 -06:00
TODO Update TODO based on completed tasks. 2008-03-28 08:42:39 -06:00

-*- text -*-

Autoconf

Autoconf is an extensible package of M4 macros that produce shell
scripts to automatically configure software source code packages.
These scripts can adapt the packages to many kinds of UNIX-like
systems without manual user intervention.  Autoconf creates a
configuration script for a package from a template file that lists the
operating system features that the package can use, in the form of M4
macro calls.

Producing configuration scripts using Autoconf requires GNU M4 and
Perl.  You should install GNU M4 (version 1.4.5 or later is required;
1.4.11 or later is recommended) and Perl (5.005_03 or later) before
configuring Autoconf, so that Autoconf's configure script can find
them.  The configuration scripts produced by Autoconf are
self-contained, so their users do not need to have Autoconf (or GNU
M4, Perl, etc.).

You can get GNU M4 here:

ftp://ftp.gnu.org/gnu/m4/

The file INSTALL should be distributed with packages that use
Autoconf-generated configure scripts and Makefiles that conform to the
GNU coding standards.  The package's README can just give an overview
of the package, where to report bugs, and a pointer to INSTALL for
instructions on compilation and installation.  This removes the need
to maintain many similar sets of installation instructions.

Be sure to read BUGS (especially if this version is not an official
release) and INSTALL.

Mail suggestions to autoconf@gnu.org, report bugs to
bug-autoconf@gnu.org, and submit patches to autoconf-patches@gnu.org.
All changes can be tracked at the read-only autoconf-commit@gnu.org.
Always include the Autoconf version number, which you can get by
running `autoconf --version'.  Archives of bug-autoconf@gnu.org can be
found in <http://lists.gnu.org/archive/html/bug-autoconf/>, and
similarly for the other mailing lists.

Licensing

Autoconf is released under the General Public License (GPL).
Additionally, Autoconf includes a licensing exception in some of its
source files; see the respective copyright notices for how your
project is impacted by including scripts generated by Autoconf.

This version of Autoconf uses GPLv2+ plus the above-mentioned
exceptions for its installed executables, as described in COPYING.
Meanwhile, several source files within the Autoconf project are under
GPLv3+, as described in COPYINGv3; these files are used for building
and installing Autoconf, but are not present in the installed
programs.  The entire Autoconf project will move to GPLv3+ when the
exception statements have been reformulated in terms of the Additional
Permissions as described in section 7 of GPLv3.

For more licensing information, see
<http://www.gnu.org/licenses/gpl-faq.html>.

-----

Copyright (C) 1992, 1993, 1994, 1998, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008 Free Software Foundation, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.