Hello,
returning to the patch from May.
I committed a variation of the patch, please find it attached to this mail.
I did the following:
1- declared AC_FOREACH obsolete
2- tried to eliminate some occurences
3- replaced the remaining by m4_foreach_w, which is the same as AC_FOREACH,
but defines in m4sugar.m4
ad 2: I hadn't much success with eliminating. Some occurences are tied to
user interface, as in AC_CHECK_FUNCS. Then there are occurences working with
AC_LIST_* macros; converting these would require too much work.
ad 3: We can rename the macro or expand all its occurences later.
In any case, I think the patch is going in a good direction.
Have a nice day,
Stepan
2005-07-01 Stepan Kasal <[EMAIL PROTECTED]>
* lib/autoconf/general.m4 (AC_FOREACH): Make obsolete; it's
replaced ...
* lib/m4sugar/m4sugar.m4 (m4_foreach_w): ... by this new macro.
* lib/autoconf/status.m4 (_AC_CONFIG_DEPENDENCIES, _AC_CONFIG_UNIQUE):
Remove m4_foreach_w.
(AC_CONFIG_SUBDIRS): Call _AC_CONFIG_UNIQUE in a m4_foreach_w loop.
Index: lib/autoconf/functions.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/functions.m4,v
retrieving revision 1.93
diff -u -r1.93 functions.m4
--- lib/autoconf/functions.m4 14 May 2005 18:33:30 -0000 1.93
+++ lib/autoconf/functions.m4 1 Jul 2005 08:28:21 -0000
@@ -78,7 +78,7 @@
# AC_CHECK_FUNCS(FUNCTION..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# ---------------------------------------------------------------------
AC_DEFUN([AC_CHECK_FUNCS],
-[AC_FOREACH([AC_Func], [$1],
+[m4_foreach_w([AC_Func], [$1],
[AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
[Define to 1 if you have the `]AC_Func[' function.])])dnl
for ac_func in $1
@@ -93,7 +93,7 @@
# AC_REPLACE_FUNCS(FUNCTION...)
# -----------------------------
AC_DEFUN([AC_REPLACE_FUNCS],
-[AC_FOREACH([AC_Func], [$1], [AC_LIBSOURCE(AC_Func.c)])dnl
+[m4_foreach_w([AC_Func], [$1], [AC_LIBSOURCE(AC_Func.c)])dnl
AC_CHECK_FUNCS([$1], , [_AC_LIBOBJ($ac_func)])
])
Index: lib/autoconf/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v
retrieving revision 1.870
diff -u -r1.870 general.m4
--- lib/autoconf/general.m4 29 Jun 2005 09:33:21 -0000 1.870
+++ lib/autoconf/general.m4 1 Jul 2005 08:28:21 -0000
@@ -190,22 +190,9 @@
## ----------------------------- ##
-# AC_FOREACH(VARIABLE, LIST, EXPRESSION)
-# --------------------------------------
-#
-# Compute EXPRESSION assigning to VARIABLE each value of the LIST.
-# LIST is a /bin/sh list, i.e., it has the form ` item_1 item_2
-# ... item_n ': white spaces are separators, and leading and trailing
-# spaces are meaningless.
-#
-# This macro is robust to active symbols:
-# AC_FOREACH([Var], [ active
-# b act\
-# ive ], [-Var-])end
-# => -active--b--active-end
-m4_define([AC_FOREACH],
-[m4_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
-
+# AU::AC_FOREACH(VARIABLE, LIST, EXPRESSION)
+# ------------------------------------------
+AU_ALIAS([AC_FOREACH], [m4_foreach_w])
@@ -2427,7 +2414,7 @@
# AC_CHECK_FILES(FILE..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# -----------------------------------------------------------------
AC_DEFUN([AC_CHECK_FILES],
-[AC_FOREACH([AC_FILE_NAME], [$1],
+[m4_foreach_w([AC_FILE_NAME], [$1],
[AC_CHECK_FILE(AC_FILE_NAME,
[AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_[]AC_FILE_NAME), 1,
[Define to 1 if you have the
Index: lib/autoconf/headers.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/headers.m4,v
retrieving revision 1.43
diff -u -r1.43 headers.m4
--- lib/autoconf/headers.m4 14 May 2005 07:00:40 -0000 1.43
+++ lib/autoconf/headers.m4 1 Jul 2005 08:28:21 -0000
@@ -185,7 +185,7 @@
# AH_CHECK_HEADERS(HEADER-FILE...)
# --------------------------------
m4_define([AH_CHECK_HEADERS],
-[AC_FOREACH([AC_Header], [$1],
+[m4_foreach_w([AC_Header], [$1],
[AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),
[Define to 1 if you have the <]AC_Header[> header file.])])])
@@ -380,7 +380,7 @@
# AH_CHECK_HEADERS_DIRENT(HEADERS...)
# -----------------------------------
m4_define([AH_CHECK_HEADERS_DIRENT],
-[AC_FOREACH([AC_Header], [$1],
+[m4_foreach_w([AC_Header], [$1],
[AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),
[Define to 1 if you have the <]AC_Header[> header file, and
it defines `DIR'.])])])
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.66
diff -u -r1.66 status.m4
--- lib/autoconf/status.m4 30 Jun 2005 18:42:09 -0000 1.66
+++ lib/autoconf/status.m4 1 Jul 2005 08:28:21 -0000
@@ -211,17 +211,16 @@
[AC_FILE_DEPENDENCY_TRACE([$1], [$1.in])])])
-# _AC_CONFIG_DEPENDENCIES(DEST[:SOURCE1[:SOURCE2...]]...)
-# -------------------------------------------------------
+# _AC_CONFIG_DEPENDENCIES(DEST[:SOURCE1[:SOURCE2...]])
+# ----------------------------------------------------
# Declare the DESTs depend upon their SOURCE1 etc.
m4_define([_AC_CONFIG_DEPENDENCIES],
-[AC_FOREACH([AC_File], [$1],
- [_AC_CONFIG_DEPENDENCY(m4_bpatsubst(AC_File, [:], [,]))])dnl
+[_AC_CONFIG_DEPENDENCY(m4_bpatsubst([$1], [:], [,]))dnl
])
-# _AC_CONFIG_UNIQUE(DEST[:SOURCE]...)
-# -----------------------------------
+# _AC_CONFIG_UNIQUE(DEST[:SOURCE])
+# --------------------------------
#
# Verify that there is no double definition of an output file
# (precisely, guarantees there is no common elements between
@@ -230,19 +229,18 @@
# Note that this macro does not check if the list $[1] itself
# contains doubles.
m4_define([_AC_CONFIG_UNIQUE],
-[AC_FOREACH([AC_File], [$1],
[m4_pushdef([AC_Dest], m4_bpatsubst(AC_File, [:.*]))dnl
+ AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_FILES],
+ [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_FILES.])])dnl
AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_HEADERS],
[AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_HEADERS.])])dnl
AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_LINKS],
[AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_LINKS.])])dnl
- AC_CONFIG_IF_MEMBER(AC_Dest, [_AC_LIST_SUBDIRS],
- [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_SUBDIRS.])])dnl
AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_COMMANDS],
[AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_COMMANDS.])])dnl
- AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_FILES],
- [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_FILES.])])dnl
-m4_popdef([AC_Dest])])dnl
+ AC_CONFIG_IF_MEMBER(AC_Dest, [_AC_LIST_SUBDIRS],
+ [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_SUBDIRS.])])dnl
+m4_popdef([AC_Dest])dnl
])
@@ -317,7 +315,7 @@
# AC_LIST_FILES_COMMANDS
# esac
AC_DEFUN([AC_CONFIG_FILES],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_FILE(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_FILE(m4_defn([AC_File]), [$2])])dnl
_AC_CONFIG_COMMANDS_INIT([$3])dnl
ac_config_files="$ac_config_files m4_normalize([$1])"
])
@@ -365,7 +363,7 @@
m4_ifdef([_AC_SUBST_FILES],
[# Create sed commands to just substitute file output variables.
-AC_FOREACH([_AC_Var], m4_defn([_AC_SUBST_FILES]),
+m4_foreach_w([_AC_Var], m4_defn([_AC_SUBST_FILES]),
[dnl End fragments at beginning of loop so that last fragment is not ended.
m4_if(1,m4_eval(_AC_SED_CMD_NUM+4>_AC_SED_CMD_LIMIT),
[dnl Fragment is full and not the last one, so no need for the final un-escape.
@@ -397,7 +395,7 @@
dnl
m4_define([_AC_SED_FRAG],[
]m4_defn([_AC_SED_FRAG]))dnl
-AC_FOREACH([_AC_Var],
+m4_foreach_w([_AC_Var],
m4_ifdef([_AC_SUBST_VARS],[m4_defn([_AC_SUBST_VARS]) ])[EMAIL PROTECTED]@],
[m4_if(_AC_SED_DELIM_NUM,0,
[m4_if(_AC_Var,[EMAIL PROTECTED]@],
@@ -620,7 +618,7 @@
# AC_LIST_HEADERS_COMMANDS
# esac
AC_DEFUN([AC_CONFIG_HEADERS],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_HEADER(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_HEADER(m4_defn([AC_File]),
[$2])])dnl
_AC_CONFIG_COMMANDS_INIT([$3])dnl
ac_config_headers="$ac_config_headers m4_normalize([$1])"
])
@@ -846,7 +844,7 @@
# Reject DEST=., because it is makes it hard for ./config.status
# to guess the links to establish (`./config.status .').
AC_DEFUN([AC_CONFIG_LINKS],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_LINK(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_LINK(m4_defn([AC_File]), [$2])])dnl
_AC_CONFIG_COMMANDS_INIT([$3])dnl
ac_config_links="$ac_config_links m4_normalize([$1])"
])
@@ -986,7 +984,7 @@
# commands must be associated with a NAME, which should be thought
# as the name of a file the COMMANDS create.
AC_DEFUN([AC_CONFIG_COMMANDS],
-[AC_FOREACH([AC_Name], [$1], [_AC_CONFIG_COMMAND(m4_defn([AC_Name]), [$2])])dnl
+[m4_foreach_w([AC_Name], [$1], [_AC_CONFIG_COMMAND(m4_defn([AC_Name]),
[$2])])dnl
_AC_CONFIG_COMMANDS_INIT([$3])dnl
ac_config_commands="$ac_config_commands $1"
])
@@ -1100,11 +1098,11 @@
# This is used in _AC_OUTPUT_SUBDIRS.
# _AC_LIST_SUBDIRS is used only for _AC_CONFIG_UNIQUE.
AC_DEFUN([AC_CONFIG_SUBDIRS],
-[_AC_CONFIG_UNIQUE([$1])dnl
+[m4_foreach_w([_AC_Sub], [$1], [_AC_CONFIG_UNIQUE([_AC_Sub])])dnl
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
m4_append([_AC_LIST_SUBDIRS], [ $1])dnl
AS_LITERAL_IF([$1], [],
- [AC_DIAGNOSE(syntax, [$0: you should use literals])])
+ [AC_DIAGNOSE(syntax, [$0: you should use literals])])dnl
m4_divert_text([DEFAULTS],
[ac_subdirs_all="$ac_subdirs_all m4_normalize([$1])"])
AC_SUBST(subdirs, "$subdirs $1")dnl
@@ -1530,30 +1528,30 @@
dnl Issue this section only if there were actually config files.
-dnl This checks if one of AC_LIST_HEADERS, AC_LIST_FILES, AC_LIST_COMMANDS,
-dnl or AC_LIST_LINKS is set.
-m4_ifval(AC_LIST_HEADERS()AC_LIST_LINKS()AC_LIST_FILES()AC_LIST_COMMANDS(),
+dnl This checks if one of AC_LIST_FILES, AC_LIST_HEADERS, AC_LIST_LINKS,
+dnl or AC_LIST_COMMANDS is set.
+m4_ifval(AC_LIST_FILES()AC_LIST_HEADERS()AC_LIST_LINKS()AC_LIST_COMMANDS(),
[
cat >>$CONFIG_STATUS <<\_ACEOF
for ac_config_target in $ac_config_targets
do
case "$ac_config_target" in
# Handling of arguments.
-AC_FOREACH([AC_File], AC_LIST_FILES,
+m4_foreach_w([AC_File], AC_LIST_FILES,
[ "m4_bpatsubst(AC_File, [:.*])" )dnl
CONFIG_FILES="$CONFIG_FILES AC_File" ;;
])dnl
-AC_FOREACH([AC_File], AC_LIST_LINKS,
+m4_foreach_w([AC_File], AC_LIST_HEADERS,
[ "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_LINKS="$CONFIG_LINKS AC_File" ;;
+ CONFIG_HEADERS="$CONFIG_HEADERS AC_File" ;;
])dnl
-AC_FOREACH([AC_File], AC_LIST_COMMANDS,
+m4_foreach_w([AC_File], AC_LIST_LINKS,
[ "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_COMMANDS="$CONFIG_COMMANDS AC_File" ;;
+ CONFIG_LINKS="$CONFIG_LINKS AC_File" ;;
])dnl
-AC_FOREACH([AC_File], AC_LIST_HEADERS,
+m4_foreach_w([AC_File], AC_LIST_COMMANDS,
[ "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_HEADERS="$CONFIG_HEADERS AC_File" ;;
+ CONFIG_COMMANDS="$CONFIG_COMMANDS AC_File" ;;
])dnl
*) AC_MSG_ERROR([invalid argument: $ac_config_target]);;
esac
Index: lib/m4sugar/m4sugar.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/m4sugar/m4sugar.m4,v
retrieving revision 2.92
diff -u -r2.92 m4sugar.m4
--- lib/m4sugar/m4sugar.m4 21 Jun 2005 15:38:24 -0000 2.92
+++ lib/m4sugar/m4sugar.m4 1 Jul 2005 08:28:21 -0000
@@ -692,6 +692,21 @@
_m4_foreach([$1], m4_cdr($2), [$3])])])
+# m4_foreach_w(VARIABLE, LIST, EXPRESSION)
+# ----------------------------------------
+#
+# Like m4_foreach, but the list is whitespace separated.
+#
+# This macro is robust to active symbols:
+# m4_foreach_w([Var], [ active
+# b act\
+# ive ], [-Var-])end
+# => -active--b--active-end
+#
+m4_define([m4_foreach_w],
+[m4_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
+
+
## --------------------------- ##
## 8. More diversion support. ##
@@ -1558,7 +1573,7 @@
m4_if(m4_eval(m4_Cursor > m4_len(m4_Prefix)),
1, [m4_define([m4_Cursor], m4_len(m4_Prefix))
m4_Prefix])[]dnl
-m4_foreach([m4_Word], m4_split(m4_normalize([$1])),
+m4_foreach_w([m4_Word], [$1],
[m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_len(m4_defn([m4_Word])) + 1))dnl
dnl New line if too long, else insert a space unless it is the first
dnl of the words.