autoconf-commit
[Top][All Lists]
Advanced

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

[SCM] GNU Autoconf source repository branch, master, updated. v2.63-195-


From: Eric Blake
Subject: [SCM] GNU Autoconf source repository branch, master, updated. v2.63-195-gcc854cd
Date: Sat, 15 Nov 2008 19:59:12 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Autoconf source repository".

http://git.sv.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=cc854cd040b2e542f6a0365b28beefd30a2bd288

The branch, master has been updated
       via  cc854cd040b2e542f6a0365b28beefd30a2bd288 (commit)
       via  fdcbe002e96ea0d2fa79ae88a4e08af5503a5913 (commit)
      from  2db8890532465e3791268cf35d7844efe5d9748e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit cc854cd040b2e542f6a0365b28beefd30a2bd288
Author: Eric Blake <address@hidden>
Date:   Sat Nov 15 10:36:22 2008 -0700

    Use the new AS_FOR function.
    
    * lib/autoconf/functions.m4 (AC_CHECK_FUNCS): Use new
    abstraction for cleaner code.
    * lib/autoconf/headers.m4 (AC_CHECK_HEADERS): Likewise.
    
    Signed-off-by: Eric Blake <address@hidden>

commit fdcbe002e96ea0d2fa79ae88a4e08af5503a5913
Author: Eric Blake <address@hidden>
Date:   Sat Nov 15 10:17:06 2008 -0700

    Add AS_FOR, undocumented for now.
    
    * lib/m4sugar/m4sh.m4 (AS_FOR): New macro.
    * tests/m4sh.at (AS@&address@hidden): New test.
    Suggested by Paolo Bonzini.
    
    Signed-off-by: Eric Blake <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |   12 ++++++++
 lib/autoconf/functions.m4 |   14 +++------
 lib/autoconf/headers.m4   |   15 +++-------
 lib/m4sugar/m4sh.m4       |   27 ++++++++++++++++++
 tests/m4sh.at             |   66 +++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 115 insertions(+), 19 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 31dd4f2..81f28fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-11-15  Eric Blake  <address@hidden>
+
+       Use the new AS_FOR function.
+       * lib/autoconf/functions.m4 (AC_CHECK_FUNCS): Use new
+       abstraction for cleaner code.
+       * lib/autoconf/headers.m4 (AC_CHECK_HEADERS): Likewise.
+
+       Add AS_FOR, undocumented for now.
+       * lib/m4sugar/m4sh.m4 (AS_FOR): New macro.
+       * tests/m4sh.at (AS@&address@hidden): New test.
+       Suggested by Paolo Bonzini.
+
 2008-11-13  Eric Blake  <address@hidden>
 
        Optimize single-argument loop.
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index ebd7403..0e22efc 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -108,15 +108,11 @@ m4_define([_AH_CHECK_FUNC],
 # `break' to stop the search.
 AC_DEFUN([AC_CHECK_FUNCS],
 [m4_map_args_w([$1], [_AH_CHECK_FUNC(], [)])]dnl
-[m4_pushdef([AC_func], m4_if(m4_index(m4_translit([$1], [      ][
-$`], [    ]), [ ]), [-1], [[$1]], [[$ac_func]]))]dnl
-[for ac_func in $1
-do
-AC_CHECK_FUNC(AC_func,
-             [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_]AC_func)) $2],
-             [$3])dnl
-done
-_m4_popdef([AC_func])])
+[AS_FOR([AC_func], [ac_func], [$1],
+[AC_CHECK_FUNC(AC_func,
+              [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_]AC_func)) $2],
+              [$3])dnl])
+])# AC_CHECK_FUNCS
 
 
 # _AC_CHECK_FUNC_ONCE(FUNCTION)
diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
index bf2cb7a..56bbb39 100644
--- a/lib/autoconf/headers.m4
+++ b/lib/autoconf/headers.m4
@@ -245,16 +245,11 @@ m4_define([_AH_CHECK_HEADER],
 # header.  Either ACTION may include `break' to stop the search.
 AC_DEFUN([AC_CHECK_HEADERS],
 [m4_map_args_w([$1], [_AH_CHECK_HEADER(], [)])]dnl
-[m4_pushdef([AC_header], m4_if(m4_index(m4_translit([$1], [    ][
-$`], [    ]), [ ]), [-1], [[$1]], [[$ac_header]]))]dnl
-[for ac_header in $1
-do
-AC_CHECK_HEADER(AC_header,
-               [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_]AC_header)) $2],
-               [$3],
-               [$4])dnl
-done
-_m4_popdef([AC_header])])# AC_CHECK_HEADERS
+[AS_FOR([AC_header], [ac_header], [$1],
+[AC_CHECK_HEADER(AC_header,
+                [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_]AC_header)) $2],
+                [$3], [$4])dnl])
+])# AC_CHECK_HEADERS
 
 
 # _AC_CHECK_HEADER_ONCE(HEADER-FILE)
diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
index a39f702..f106e2d 100644
--- a/lib/m4sugar/m4sh.m4
+++ b/lib/m4sugar/m4sh.m4
@@ -533,6 +533,33 @@ m4_define([AS_EXIT],
 [{ (exit m4_default([$1], 1)); exit m4_default([$1], 1); }])
 
 
+# AS_FOR(MACRO, SHELL-VAR, [LIST = "$@"], [BODY = :])
+# ---------------------------------------------------
+# Expand to a shell loop that assigns SHELL-VAR to each of the
+# whitespace-separated entries in LIST (or "$@" if LIST is empty),
+# then executes BODY.  BODY may call break to abort the loop, or
+# continue to proceed with the next element of LIST.  Requires that
+# IFS be set to the normal space-tab-newline.  As an optimization,
+# BODY should access MACRO rather than $SHELL-VAR.  Normally, MACRO
+# expands to $SHELL-VAR, but if LIST contains only a single element
+# that needs no additional shell quoting, then MACRO will expand to
+# that element, thus providing a direct value rather than a shell
+# variable indirection.
+#
+# Only use the optimization if LIST can be used without additional
+# shell quoting in either a literal or double-quoted context (that is,
+# we give up on default IFS chars, parameter expansion, command
+# substitution, shell quoting, globs, or quadrigraphs).  Inline the
+# m4_defn for speed.
+m4_defun([AS_FOR],
+[m4_pushdef([$1], m4_if(m4_translit([$3], ]dnl
+m4_dquote(_m4_defn([m4_cr_symbols2]))[[%+=:,./-]), [], [[$3]], [[$$2]]))]dnl
+[for $2[]m4_ifval([$3], [ in $3])
+do
+  m4_default([$4], [:])
+done[]_m4_popdef([$1])])
+
+
 # AS_IF(TEST1, [IF-TRUE1 = :]...[IF-FALSE = :])
 # ---------------------------------------------
 # Expand into
diff --git a/tests/m4sh.at b/tests/m4sh.at
index a8acf56..383d821 100644
--- a/tests/m4sh.at
+++ b/tests/m4sh.at
@@ -906,6 +906,72 @@ m4_popdef([limit])
 AT_CLEANUP
 
 
+## -------- ##
+## AS_FOR.  ##
+## -------- ##
+
+AT_SETUP([AS@&address@hidden)
+AT_KEYWORDS([m4sh])
+
+AT_DATA_M4SH([script.as], [[dnl
+AS_INIT
+
+# Simple checks.
+AS_FOR([m4var], [shvar], [a],
+[echo "m4var $shvar"])
+AS_FOR([m4var], [shvar], [b c],
+[echo "m4var $shvar"])
+list='d e'
+AS_FOR([m4var], [shvar], [$list],
+[echo "m4var $shvar"])
+AS_FOR([m4var], [shvar], ["$list"],
+[echo "m4var $shvar"])
+AS_FOR([m4var], [shvar], ['$list'],
+[echo "m4var $shvar"])
+AS_FOR([m4var], [shvar], [\'],
+[echo "m4var $shvar"])
+
+# Syntax checks: cope with empty arguments.
+set f g
+AS_FOR([], [shvar], [],
+[echo "$shvar"])
+rm -f file
+AS_FOR([], [shvar], [`touch file`])
+test -f file || exit 1
+
+# Check that break works.
+while :
+do
+  AS_FOR([m4var], [shvar], [h i],
+    [echo "m4var"; break 2])
+  exit 1
+done
+while :
+do
+  AS_FOR([m4var], [shvar], [j],
+    [echo "m4var"; break 2])
+  exit 1
+done
+]])
+
+AT_CHECK_M4SH
+AT_CHECK([./script], [0], [[a a
+b b
+c c
+d d
+e e
+d e d e
+$list $list
+' '
+f
+g
+h
+j
+]])
+
+AT_CLEANUP
+
+
 ## --------------- ##
 ## AS_LITERAL_IF.  ##
 ## --------------- ##


hooks/post-receive
--
GNU Autoconf source repository




reply via email to

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