Subject: bug#13477: automake 1.13 breaks when TESTS variable contains GNU make macros like $(sort ...)

From: Stefano Lattarini <[email-masked]>
Date: Thu, 17 Jan 2013 19:29:29 +0100

On 01/17/2013 01:36 PM, Richard W.M. Jones wrote:
> I have a project that has a TESTS variable like this ('test_progs' is
> defined elsewhere):
> 
> TESTS = run-bindtests \
> 	$(sort \
> 		$(patsubst %,%.bc,$(test_progs)) \
> 		$(patsubst %,%.opt,$(test_progs)))
> 
> This breaks with automake 1.13.1.  'make' gives unterminated variable
> errors.  It is fairly obvious why when you look at the generated code:
> 
> run-bindtests.log: run-bindtests
> 		   @p='run-bindtests'; \
> 		   b='run-bindtests'; \
>         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
>         --log-file $$b.log --trs-file $$b.trs \
>         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -\
> - $(LOG_COMPILE) \
>         "$$tst" $(AM_TESTS_FD_REDIRECT)
> $(sort.log: $(sort
>         @p='$(sort'; \
>         b='$(sort'; \
>         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
>         --log-file $$b.log --trs-file $$b.trs \
>         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -\
> - $(LOG_COMPILE) \
>         "$$tst" $(AM_TESTS_FD_REDIRECT)
> $(patsubst.log: $(patsubst
>         @p='$(patsubst'; \
>         b='$(patsubst'; \
> 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
>         --log-file $$b.log --trs-file $$b.trs \
>         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -\
> - $(LOG_COMPILE) \
>         "$$tst" $(AM_TESTS_FD_REDIRECT)
> %,%.bc,$(test_progs)).log: %,%.bc,$(test_progs))
> 
> This used to work fine in automake <= 1.12.  I also tried jamming the
> whole thing into a single line, but that didn't help.
> 
Does the thing work again if you use the 'serial-tests' option (which was the
default before automake 1.13)?

Regards,
  Stefano