mirror of
git://git.sv.gnu.org/autoconf
synced 2025-01-24 10:54:42 +08:00
Work around <=m4-1.4.9 bug in m4_format.
* lib/m4sugar/m4sugar.m4 (_m4_index): New internal macro. (m4_init): Only use it in older m4. * lib/autoconf/general.m4 (_AC_DEFINE_Q): Use it to avoid m4_format bug in older m4. * lib/autoconf/status.m4 (_AC_CONFIG_COMPUTE_DEST): Likewise. Reported by Bob Proulx. Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
parent
5bf2204ddb
commit
74bb1a450d
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2008-11-10 Eric Blake <ebb9@byu.net>
|
||||
|
||||
Work around <=m4-1.4.9 bug in m4_format.
|
||||
* lib/m4sugar/m4sugar.m4 (_m4_index): New internal macro.
|
||||
(m4_init): Only use it in older m4.
|
||||
* lib/autoconf/general.m4 (_AC_DEFINE_Q): Use it to avoid
|
||||
m4_format bug in older m4.
|
||||
* lib/autoconf/status.m4 (_AC_CONFIG_COMPUTE_DEST): Likewise.
|
||||
Reported by Bob Proulx.
|
||||
|
||||
2008-11-10 Eric Blake <ebb9@byu.net>
|
||||
|
||||
Match upstream standards.texi.
|
||||
|
@ -2077,8 +2077,10 @@ m4_define([AC_DEFINE_UNQUOTED], [_AC_DEFINE_Q([], $@)])
|
||||
# m4_format rather than regex to grab prefix up to first (). AC_name
|
||||
# is defined with over-quotation, so that we can avoid m4_defn; this
|
||||
# is only safe because the name should not contain $.
|
||||
#
|
||||
# Use _m4_index to avoid a bug in m4_format in older m4.
|
||||
m4_define([_AC_DEFINE_Q],
|
||||
[m4_pushdef([AC_name], m4_format([[[%.*s]]], m4_index([$2], [(]), [$2]))]dnl
|
||||
[m4_pushdef([AC_name], m4_format([[[%.*s]]], _m4_index([$2], [(]), [$2]))]dnl
|
||||
[AC_DEFINE_TRACE(AC_name)]dnl
|
||||
[m4_cond([m4_index([$3], [
|
||||
])], [-1], [],
|
||||
|
@ -247,9 +247,9 @@ m4_define([_AC_CONFIG_FOOS],
|
||||
# _AC_CONFIG_COMPUTE_DEST(STRING)
|
||||
# -------------------------------
|
||||
# Compute the DEST from STRING by stripping any : and following
|
||||
# characters.
|
||||
# characters. Use _m4_index to avoid a bug in m4_format in older m4.
|
||||
m4_define([_AC_CONFIG_COMPUTE_DEST],
|
||||
[m4_format([[%.*s]], m4_index([$1], [:]), [$1])])
|
||||
[m4_format([[%.*s]], _m4_index([$1], [:]), [$1])])
|
||||
|
||||
# _AC_CONFIG_REGISTER(MODE, TAG, [COMMANDS])
|
||||
# ------------------------------------------
|
||||
|
@ -625,6 +625,22 @@ m4_define([m4_dumpdefs],
|
||||
[m4_map_args([$0], $@)])])
|
||||
|
||||
|
||||
# _m4_index(HAYSTACK, NEEDLE)
|
||||
# ---------------------------
|
||||
# Like the original, except return -2 instead of -1 if NEEDLE is not
|
||||
# present in HAYSTACK. That way, it can be used to work around a bug
|
||||
# in m4 1.4.9 and earlier where m4_format did not accept a precision
|
||||
# of -1; this macro can be safely used in the idiom:
|
||||
# m4_format([[%.*s]], _m4_index([$1],[$2]), [$1])
|
||||
# to grab the prefix of $1 up to but excluding $2, if it was present,
|
||||
# otherwise the entire $1.
|
||||
m4_define([_m4_index],
|
||||
[$0_(m4_index($@))])
|
||||
|
||||
m4_define([_m4_index_],
|
||||
[m4_if([$1], [-1], [-2], [$1])])
|
||||
|
||||
|
||||
# m4_popdef(NAME)
|
||||
# ---------------
|
||||
# Like the original, except guarantee a warning when using something which is
|
||||
@ -2975,7 +2991,8 @@ 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 and debugmode(d)
|
||||
# is available for faster checks of dereferencing undefined macros.
|
||||
# is available for faster checks of dereferencing undefined macros,
|
||||
# and we don't need to worry about _m4_format bugs with _m4_index.
|
||||
# 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
|
||||
@ -2983,9 +3000,10 @@ m4_pattern_forbid([^dnl$])
|
||||
# undefines m4_defn.
|
||||
m4_ifdef([__m4_version__],
|
||||
[m4_debugmode([+d])
|
||||
m4_define([m4_defn], _m4_defn([m4_defn]))
|
||||
m4_define([m4_popdef], _m4_defn([m4_popdef]))
|
||||
m4_define([m4_undefine], _m4_defn([m4_undefine]))],
|
||||
m4_define([m4_defn], _m4_defn([_m4_defn]))
|
||||
m4_define([_m4_index], _m4_defn([m4_index]))
|
||||
m4_define([m4_popdef], _m4_defn([_m4_popdef]))
|
||||
m4_define([m4_undefine], _m4_defn([_m4_undefine]))],
|
||||
[m4_builtin([include], [m4sugar/foreach.m4])])
|
||||
|
||||
# Rewrite the first entry of the diversion stack.
|
||||
|
Loading…
Reference in New Issue
Block a user