aclocal: smash newlines in arguments of traced macros
authorStefano Lattarini <stefano.lattarini@gmail.com>
Fri, 2 Nov 2012 10:49:46 +0000 (11:49 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 10 Nov 2012 09:21:08 +0000 (10:21 +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 <stefano.lattarini@gmail.com>
aclocal.in
t/aclocal-macrodirs.tap

index 751ab49..0220a7d 100644 (file)
@@ -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));
         }
     }
 
index 9350b87..81ca75e 100755 (executable)
@@ -152,7 +152,7 @@ test_end
 
 #---------------------------------------------------------------------------
 
-test_begin "AC_CONFIG_MACRO_DIRS: extra whitespace" TODO
+test_begin "AC_CONFIG_MACRO_DIRS: extra whitespace"
 
 bslash=\\