Essentially, you want to go through the preconditions. The obvious way to do this is to punt the shell:
log: test_A test_B
for f in $^; do ./$$f; done
GNU Make foreach, , , , ( define) (.. ):
log: test_A test_B
$(foreach f,$^,./$(f);)
, , , :
log: test_A test_B
$(patsubst %,./%;,$^)
( , $(TESTS), .)