-# Copyright © 2015 Nick Bowler
+# Copyright © 2015,2019-2020 Nick Bowler
#
# Automake fragment to hook up a basic Autotest test suite into the build.
# It is expected that a testsuite.at file exists in $(srcdir). The
rm -f testsuite package.m4
.PHONY: maintainerclean-autotest
-package.m4:
+package.m4: $(top_srcdir)/configure.ac
$(AM_V_GEN) :; { \
printf 'm4_define([%s], [%s])\n' \
AT_PACKAGE_NAME '$(PACKAGE_NAME)' \
; } >$@.tmp
$(AM_V_at) mv -f $@.tmp $@
-testsuite: testsuite.at package.m4
-if !HAVE_AUTOTEST
- @:; { \
+DX_AUTOTEST_ERROR = @:; { \
printf 'ERROR: Autotest was not available at configure time.\n'; \
printf 'You should only need it if you modified the test suite.\n'; \
printf 'Autotest is part of autom4te, included in the GNU\n'; \
printf 'Autoconf package: <https://gnu.org/s/autoconf/>\n'; \
- } 1>&2
- @false
+ } 1>&2; false
+
+DX_ATFLAGS = -I$(srcdir) $(ATFLAGS)
+
+testsuite: testsuite.at package.m4
+if !HAVE_AUTOTEST
+ $(DX_AUTOTEST_ERROR)
endif
- $(AM_V_GEN) $(AUTOTEST) $(ATFLAGS) -p m4_include -o $@.tmp testsuite.at
+ $(AM_V_GEN) $(AUTOTEST) $(DX_ATFLAGS) -p m4_include -o $@.tmp \
+ testsuite.at
$(AM_V_at) :; { \
- $(AUTOTEST) $(ATFLAGS) -t m4_include:'$@: $$1' testsuite.at; \
- $(AUTOTEST) $(ATFLAGS) -t m4_include:'$$1:' testsuite.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) mv -f $@.tmp $@
-EXTRA_DIST += testsuite testsuite.at package.m4
+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
+ exec 3<$?; while read f <&3; do \
+ dir=`expr "$$f" : '\(.*\)/'`; \
+ $(MKDIR_P) "$(distdir)/$$dir" && \
+ chmod u+w "$(distdir)/$$dir" && \
+ cp -p "$(srcdir)/$$f" "$(distdir)/$$f" || exit; \
+ done
+.PHONY: dist-autotest-deps
+
+EXTRA_DIST += testsuite testsuite.at testsuite.deps package.m4
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.
+_dx_autotest_depfiles = am--depfiles
+$(_dx_autotest_depfiles): $(DEPDIR)/testsuite.P
+$(DEPDIR)/testsuite.P:
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && mv -f $@-t $@