test_source_files := fail=.cxx
test_bins := $(basename $(test_source_files))


all: $(test_bins)


define test_recipe =
$(CXX) -o $(@) $(<)
endef


define test_rule =
$(1): $(addsuffix .cxx,$(1)); $$(test_recipe)
endef


$(foreach test_bin,$(test_bins),$(eval $(call test_rule,$(test_bin))))


.PHONY: all
