From c0160f6c79a746d7e8a285ea21c8d43200d1f042 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 11 Sep 2016 15:05:49 +0100 Subject: [PATCH] vars.am: Associate more useful dependencies with test programs. For a long time, probably forever, `make FOO.t' hasn't actually worked to rebuild the test program because of deficiencies in make(1) suffix rules. Add GNU Make pattern rules, which can have dependencies, to finally fix this. --- vars.am | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vars.am b/vars.am index feb75884..69154072 100644 --- a/vars.am +++ b/vars.am @@ -110,11 +110,23 @@ AM_CPPFLAGS = $(CATACOMB_INCLUDES) TEST_EXTENSIONS = .t SUFFIXES += .c .t$(EXEEXT) .to + +## This unpleasant duplication of rules makes the build system basically work +## for non-GNU make(1) variants, while GNU Make will associate useful +## additional dependencies with the test programs. GNU Make seems not to +## mind the duplicate rules, and uses the second (better) set; non-GNU Make +## will think the second set refer to bizarrely-named targets which nobody is +## apparently interested in. .c.to: $(AM_V_CC)$(COMPILE) -c -DTEST_RIG -DSRCDIR=\"$(srcdir)\" $< -o $@ .to.t$(EXEEXT): $(AM_V_CCLD)$(LINK) $< $(TEST_LIBS) $(top_builddir)/libcatacomb.la \ $(mLib_LIBS) $(CATACOMB_LIBS) $(LIBS) +%.to: %.c %.lo + $(AM_V_CC)$(COMPILE) -c -DTEST_RIG -DSRCDIR=\"$(srcdir)\" $< -o $@ +%.t$(EXEEXT): %.to $(TEST_LIBS) $(top_builddir)/libcatacomb.la + $(AM_V_CCLD)$(LINK) $+ $(mLib_LIBS) $(CATACOMB_LIBS) $(LIBS) + .PRECIOUS: %.to CLEANFILES += *.to *.t$(EXEEXT) -- 2.11.0