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

From: "Richard W.M. Jones" <[email-masked]>
Date: Thu, 17 Jan 2013 12:36:15 +0000

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.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top