m4-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [0/18] new argv_ref branch for m4 speedup


From: Eric Blake
Subject: Re: [0/18] new argv_ref branch for m4 speedup
Date: Tue, 04 Dec 2007 06:35:49 -0700
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Eric Blake on 11/19/2007 9:12 PM:
> For some background - up till now, m4 tail recursion (such as used in
> m4sugar's m4_foreach) was inherently quadratic in operation when executed
> on GNU m4:
> http://lists.gnu.org/archive/html/autoconf-patches/2007-10/msg00145.html
> 
> (For the record, I tried to determine how other m4 implementations behave,
> but Solaris m4 has a stupid limit of a maximum of 100 arguments to any
> macro invocation, and I don't have access to a compiled BSD version).

Thanks to the generosity of Benoit Sigoure, I now have access to an
OpenBSD machine, where I verified that the BSD m4 is indeed quadratic in
time (I didn't bother to figure out whether it is quadratic in memory as
well).

But in the process of testing that, I discovered that m4 won't even build
from git with BSD make, because the rule for m4.1 was incorrect.  I'm
applying this to branch and head.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHVVe184KuGfSFAYARAnCqAJoCzHTAxuOjSPa26p62hLLBpMlwIACfeFo5
ccDmSdaa+tv77mnYFAvlS3o=
=sEKw
-----END PGP SIGNATURE-----
>From 8ad387be88fe59b2925598db2afb00800f2a643b Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Mon, 3 Dec 2007 16:57:15 -0700
Subject: [PATCH] Fix builds with OpenBSD make.

* doc/Makefile.am (HELP2MAN): New macro.
(man_MANS, m4.1): Fix rules for building m4.1 into srcdir.
* README: Update copyright.
* HACKING: Mention help2man and makeinfo dependencies.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog       |    8 ++++++++
 HACKING         |   24 ++++++++++++++++--------
 README          |    2 +-
 doc/Makefile.am |    8 ++++----
 4 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0662337..1672120 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-12-04  Eric Blake  <address@hidden>
+
+       Fix builds with OpenBSD make.
+       * doc/Makefile.am (HELP2MAN): New macro.
+       (man_MANS, m4.1): Fix rules for building m4.1 into srcdir.
+       * README: Update copyright.
+       * HACKING: Mention help2man and makeinfo dependencies.
+
 2007-11-29  Eric Blake  <address@hidden>
 
        Stage 4: route indir, builtin through ref; make argv opaque.
diff --git a/HACKING b/HACKING
index d49bc66..987d2c3 100644
--- a/HACKING
+++ b/HACKING
@@ -40,19 +40,27 @@ and is not part of a release distribution.
 
 * The master M4 repository is stored in git.
 
-* Before you can build from git, you need to bootstrap.  This requires a
-  pre-installed version of GNU M4 built from a package, Autoconf 2.60 or
-  later, Automake 1.9.6 or later, and a git checkout of gnulib.  A
-  read-only copy of gnulib can be obtained by:
-    git clone git://git.sv.gnu.org/gnulib.git
-  or
-    cvs -d:pserver:address@hidden:/srv/git/gnulib.git \
-      co -d gnulib HEAD
+* Before you can build from git, you need to bootstrap.  This requires:
+  - A pre-installed version of GNU M4 built from a package
+  - Autoconf 2.60 or later
+  - Automake 1.9.6 or later
+  - Help2man 1.29 or later
+  - Texinfo 4.8 or later
+  - Any prerequisites of the above (such as perl, tex)
+  - A git checkout of gnulib.  A read-only copy of gnulib can be
+    obtained by:
+      git clone git://git.sv.gnu.org/gnulib.git
+    or
+      cvs -d:pserver:address@hidden:/srv/git/gnulib.git \
+        co -d gnulib HEAD
 
   If you are a member of the savannah group for gnulib, a read-write
   copy can be obtained by:
     git clone <savannah-user>@git.sv.gnu.org:/srv/git/gnulib.git
 
+  Note that none of these bootstrapping dependencies should be required
+  by a distributed release.
+
 * Either add the gnulib directory to your PATH, or run
     GNULIB_TOOL=path/to/gnulib/gnulib-tool ./bootstrap
 
diff --git a/README b/README
index 5176b55..92a5e54 100644
--- a/README
+++ b/README
@@ -47,7 +47,7 @@ solution, from which the problem might be uneasy to infer.
 
 ========================================================================
 
-Copyright (C) 2000, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2000, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.2 or
diff --git a/doc/Makefile.am b/doc/Makefile.am
index ded347f..b5cd360 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -21,10 +21,11 @@
 
 info_TEXINFOS = m4.texinfo
 m4_TEXINFOS = fdl.texi gpl-3.0.texi
-man_MANS = m4.1
+man_MANS = $(srcdir)/m4.1
 EXTRA_DIST = $(man_MANS) gendocs_template
 MAINTAINERCLEANFILES = $(man_MANS) gendocs_template
 SUFFIXES = .1
+HELP2MAN = $(SHELL) $(top_srcdir)/build-aux/missing --run help2man
 
 # Depend on configure.ac for version, m4.c for usage text.  Do not depend on
 # built m4 executable, since not everyone has help2man or perl.
@@ -34,9 +35,8 @@ SUFFIXES = .1
 $(srcdir)/m4.1: $(top_srcdir)/configure.ac $(top_srcdir)/src/m4.c
        @if test -x ../src/m4$(EXEEXT) ; then \
          echo "Updating man page m4.1" ; \
-         $(SHELL) $(top_srcdir)/build-aux/missing --run \
-           help2man --name="macro processor" --source=FSF \
-             --info-page=m4 --output=$@ ../src/m4$(EXEEXT) ; \
+         $(HELP2MAN) --name="macro processor" --source=FSF \
+           --info-page=m4 --output=$@ ../src/m4$(EXEEXT) ; \
        else \
          echo "WARNING: The \`man' page \`$@' cannot be updated yet."; \
          echo "         Retry once the program executable is ready."; \
-- 
1.5.3.5


reply via email to

[Prev in Thread] Current Thread [Next in Thread]