X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/803e498e869f88d9daceadf143e3360c17cb7410..157fb6f1bcb5af0d93bb588522bb1be86aa2fd71:/snippet/autotest.mk diff --git a/snippet/autotest.mk b/snippet/autotest.mk index d5adc9d..badfc9f 100644 --- a/snippet/autotest.mk +++ b/snippet/autotest.mk @@ -31,7 +31,7 @@ clean-autotest: maintainer-clean-local: maintainer-clean-autotest maintainer-clean-autotest: - rm -f testsuite package.m4 + rm -f testsuite testsuite.deps package.m4 .PHONY: maintainerclean-autotest package.m4: $(top_srcdir)/configure.ac @@ -53,27 +53,20 @@ DX_AUTOTEST_ERROR = @:; { \ printf 'Autoconf package: \n'; \ } 1>&2; false -DX_ATFLAGS = -I$(srcdir) $(ATFLAGS) +DX_AUTOTEST = $(AUTOTEST) -I$(srcdir) $(ATFLAGS) testsuite: testsuite.at package.m4 if !HAVE_AUTOTEST $(DX_AUTOTEST_ERROR) endif - $(AM_V_GEN) $(AUTOTEST) $(DX_ATFLAGS) -p m4_include -o $@.tmp \ + $(AM_V_GEN) $(DX_AUTOTEST) -p m4_include -o $@.tmp testsuite.at + $(AM_V_at) $(DX_AUTOTEST) -t m4_include:'$$1' -o $@.deps.tmp \ testsuite.at - $(AM_V_at) :; { \ - $(AUTOTEST) $(DX_ATFLAGS) -t m4_include:'$@: $$1' testsuite.at; \ - $(AUTOTEST) $(DX_ATFLAGS) -t m4_include:'$$1:' testsuite.at; \ - } >$(DEPDIR)/$(@F).P + $(AM_V_at) exec 3<$@.deps.tmp 4>$(DEPDIR)/$(@F).P; \ + while read f <&3; do printf '$@: %s\n%s:\n' "$$f" "$$f" >&4; done + $(AM_V_at) mv -f $@.deps.tmp $@.deps $(AM_V_at) mv -f $@.tmp $@ - testsuite.deps: testsuite -if !HAVE_AUTOTEST - $(DX_AUTOTEST_ERROR) -endif - $(AM_V_GEN) $(AUTOTEST) $(DX_ATFLAGS) -t m4_include:'$$1' -o $@.tmp \ - testsuite.at - $(AM_V_at) mv -f $@.tmp $@ dist-hook: dist-autotest-deps dist-autotest-deps: testsuite.deps @@ -91,10 +84,25 @@ DISTCLEANFILES += atconfig $(DEPDIR)/testsuite.P @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/testsuite.P@am__quote@ # Automake 1.16 and newer use make rules to generate the dependency stubs. -# we must hook those which is kind of annoying to do. This should be harmless -# on previous versions which generate the stubs directly in config.status. +# Use this opportunity to generate accurate prerequisites from distributed +# testsuite dependencies, needed so that make knows to rebuild the testsuite +# when source files are modified in a distribution tarball, or after a make +# distclean. +# +# With older Automake the stubs are generated directly in config.status. +# Since this rule is ignored things should still work but the build may +# miss modifications to the testsuite on the first build from a tarball. _dx_autotest_depfiles = am--depfiles $(_dx_autotest_depfiles): $(DEPDIR)/testsuite.P $(DEPDIR)/testsuite.P: @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && mv -f $@-t $@ + @if test -f $(builddir)/testsuite.deps; then \ + exec 3<$(builddir)/testsuite.deps; \ + elif test -f $(srcdir)/testsuite.deps; then \ + exec 3<$(srcdir)/testsuite.deps; \ + else \ + echo '# dummy' >$@-t && exit; \ + fi; exec 4>$@-t; while read f <&3; do \ + printf 'testsuite: %s\n%s:\n' "$$f" "$$f" >&4; \ + done + @mv -f $@-t $@