automake-patches
[Top][All Lists]
Advanced

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

[PATCH 4/4] aclocal: smash newlines in arguments of traced macros


From: Stefano Lattarini
Subject: [PATCH 4/4] aclocal: smash newlines in arguments of traced macros
Date: Fri, 2 Nov 2012 13:27:11 +0100

This change fixes the existing issues with AC_CONFIG_MACRO_DIRS
containing newlines:
<http://lists.gnu.org/archive/html/autoconf-patches/2012-11/msg00000.html>

Likely, it will also allow a less involved implementation of the
AM_EXTRA_RECURSIVE_TARGETS macro (but that is left for potential
follow-up patches).

* aclocal.in (trace_used_macros): When calling autom4te, pass its
'--trace' option an argument containing '${::}%' rather than '$1'.
According to the autoconf manual (as of version 2.69), that will expand
to the concatenation, with the '::' string, of all the arguments passed
to a macro, with all newline characters in such arguments smashed.
Related adjustments when handling the macro AC_CONFIG_MACRO_DIRS, to
ensure leading whitespace in its argument are handled correctly.
* t/aclocal-macrodirs.tap ("AC_CONFIG_MACRO_DIRS: extra whitespace"):
No longer declare it as an xfailing test.

Signed-off-by: Stefano Lattarini <address@hidden>
---
 aclocal.in              | 6 ++++--
 t/aclocal-macrodirs.tap | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/aclocal.in b/aclocal.in
index 751ab49..0220a7d 100644
--- a/aclocal.in
+++ b/aclocal.in
@@ -725,7 +725,7 @@ sub trace_used_macros ()
 
   # All candidate macros.
   $traces .= join (' ',
-                  (map { "--trace='$_:\$f::\$n::\$1'" }
+                  (map { "--trace='$_:\$f::\$n::\${::}%'" }
                    ('AC_DEFUN',
                     'AC_DEFUN_ONCE',
                     'AU_DEFUN',
@@ -767,7 +767,9 @@ sub trace_used_macros ()
         }
       elsif ($macro eq 'AC_CONFIG_MACRO_DIRS')
         {
-          push @ac_config_macro_dirs, split (/\s+/, $arg1);
+          # Empty leading/trailing fields might be produced by split,
+          # hence the grep is really needed.
+          push @ac_config_macro_dirs, grep (/./, (split /\s+/, $arg1));
         }
     }
 
diff --git a/t/aclocal-macrodirs.tap b/t/aclocal-macrodirs.tap
index 9350b87..81ca75e 100755
--- a/t/aclocal-macrodirs.tap
+++ b/t/aclocal-macrodirs.tap
@@ -152,7 +152,7 @@ test_end
 
 #---------------------------------------------------------------------------
 
-test_begin "AC_CONFIG_MACRO_DIRS: extra whitespace" TODO
+test_begin "AC_CONFIG_MACRO_DIRS: extra whitespace"
 
 bslash=\\
 
-- 
1.8.0




reply via email to

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