-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Eric Blake on 8/25/2008 7:07 AM: > > Here's what I'm planning on committing to m4; it adds debugmode(d) as a > new flag that controls whether dereferencing undefined macros warns, then > enables the flag by default unless an explicit -d specifies other flags or > if -E is in effect. Both conditions for disabling the debugmode(d) flag > were necessary, so that branch-1.6 of m4.git can once again handle > autoconf 2.62 out of the box. I've committed the m4 side. > > By committing this series, I now need a followup patch to autoconf; > m4sugar now needs to explicitly request m4_debugmode([+d]) when it detects > __m4_version__, before it can rely on native defn/popdef/undefine for speed. Here's what I'm committing on the autoconf side. - -- Don't work too hard, make some time for fun as well! Eric Blake ebb9@xxxxxxx -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkiz98oACgkQ84KuGfSFAYCwDACg2DwLJNScZdEMmp+EQLgctGeF VyAAoJMtlRhKtiNpEsX1mI4TacK7LT/r =1ChQ -----END PGP SIGNATURE-----
>From 5391c02b40f89b33fb7e1b309cb61986281a0161 Mon Sep 17 00:00:00 2001 From: Eric Blake <ebb9@xxxxxxx> Date: Mon, 25 Aug 2008 16:26:27 -0600 Subject: [PATCH] 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. Signed-off-by: Eric Blake <ebb9@xxxxxxx> --- ChangeLog | 8 ++++++++ lib/m4sugar/m4sugar.m4 | 39 +++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b45504..51812e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-08-25 Eric Blake <ebb9@xxxxxxx> + + 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. + 2008-08-22 Peter O'Gorman <pogma@xxxxxxxxxxxxxxxxxx> Limit AC_C_BIGENDIAN univeral checks to Mac OS X. diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4 index 6ee157c..3607e45 100644 --- a/lib/m4sugar/m4sugar.m4 +++ b/lib/m4sugar/m4sugar.m4 @@ -529,19 +529,18 @@ m4_define([m4_default], # # This macro is called frequently, so minimize the amount of additional # expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us. +# (added in M4 1.6), then let m4 do the job for us (see m4_init). # # _m4_defn is for internal use only - it bypasses the wrapper, so it # must only be used on one argument at a time, and only on macros # known to be defined. Make sure this still works if the user renames # m4_defn but not _m4_defn. m4_copy([m4_defn], [_m4_defn]) -m4_ifdef([__m4_version__], [], -[m4_define([m4_defn], +m4_define([m4_defn], [m4_if([$#], [0], [[$0]], [$#], [1], [m4_ifdef([$1], [_m4_defn([$1])], [m4_fatal([$0: undefined macro: $1])])], - [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])])]) + [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])]) # _m4_dumpdefs_up(NAME) @@ -579,18 +578,17 @@ _m4_dumpdefs_down([$1])]) # # This macro is called frequently, so minimize the amount of additional # expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us. +# (added in M4 1.6), then let m4 do the job for us (see m4_init). # # _m4_popdef is for internal use only - it bypasses the wrapper, so it # must only be used on macros known to be defined. Make sure this # still works if the user renames m4_popdef but not _m4_popdef. m4_copy([m4_popdef], [_m4_popdef]) -m4_ifdef([__m4_version__], [], -[m4_define([m4_popdef], +m4_define([m4_popdef], [m4_if([$#], [0], [[$0]], [$#], [1], [m4_ifdef([$1], [_m4_popdef([$1])], [m4_fatal([$0: undefined macro: $1])])], - [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])])]) + [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])]) # m4_shiftn(N, ...) @@ -646,18 +644,17 @@ m4_define([_m4_shift3], # # This macro is called frequently, so minimize the amount of additional # expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us. +# (added in M4 1.6), then let m4 do the job for us (see m4_init). # # _m4_undefine is for internal use only - it bypasses the wrapper, so # it must only be used on macros known to be defined. Make sure this # still works if the user renames m4_undefine but not _m4_undefine. m4_copy([m4_undefine], [_m4_undefine]) -m4_ifdef([__m4_version__], [], -[m4_define([m4_undefine], +m4_define([m4_undefine], [m4_if([$#], [0], [[$0]], [$#], [1], [m4_ifdef([$1], [_m4_undefine([$1])], [m4_fatal([$0: undefined macro: $1])])], - [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])])]) + [m4_foreach([_m4_macro], [$@], [$0(_m4_defn([_m4_macro]))])])]) # _m4_wrap(PRE, POST) # ------------------- @@ -2771,12 +2768,18 @@ m4_pattern_forbid([^_?m4_]) m4_pattern_forbid([^dnl$]) # If __m4_version__ is defined, we assume that we are being run by M4 -# 1.6 or newer, and thus that $@ recursion is linear; nothing further -# needs to be done. But if it is missing, we assume we are being run -# by M4 1.4.x, that $@ recursion is quadratic, and that we need -# foreach-based replacement macros. Use the raw builtin to avoid -# tripping up include tracing. -m4_ifndef([__m4_version__], [m4_builtin([include], [m4sugar/foreach.m4])]) +# 1.6 or newer, and thus that $@ recursion is linear and debugmode(d) +# is available for faster checks of dereferencing undefined macros. +# But if it is missing, we assume we are being run by M4 1.4.x, that +# $@ recursion is quadratic, and that we need foreach-based +# replacement macros. Use the raw builtin to avoid tripping up +# include tracing. +m4_ifdef([__m4_version__], +[m4_debugmode([+d]) +m4_copy([_m4_defn], [m4_defn]) +m4_copy([_m4_popdef], [m4_popdef]) +m4_copy([_m4_undefine], [m4_undefine])], +[m4_builtin([include], [m4sugar/foreach.m4])]) # _m4_divert_diversion should be defined: m4_divert_push([KILL]) -- 1.6.0
_______________________________________________ Autoconf mailing list Autoconf@xxxxxxx http://lists.gnu.org/mailman/listinfo/autoconf