Il 26/09/2013 18:16, Diab Jerius ha scritto: > # The `:;' works around a Bash 3.2 bug when the output is not writable. > %D%/package.m4: $(top_srcdir)/configure.ac > :;{ \ > echo '# Signature of the current package.' && \ > echo 'm4_define([AT_PACKAGE_NAME],' && \ > echo ' [$(PACKAGE_NAME)])' && \ > echo 'm4_define([AT_PACKAGE_TARNAME],' && \ > echo ' [$(PACKAGE_TARNAME)])' && \ > echo 'm4_define([AT_PACKAGE_VERSION],' && \ > echo ' [$(PACKAGE_VERSION)])' && \ > echo 'm4_define([AT_PACKAGE_STRING],' && \ > echo ' [$(PACKAGE_STRING)])' && \ > echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \ > echo ' [$(PACKAGE_BUGREPORT)])'; \ > echo 'm4_define([AT_PACKAGE_URL],' && \ > echo ' [$(PACKAGE_URL)])'; \ > } > $@ > > EXTRA_DIST += %D%/testsuite.at %D%/package.m4 %D%/$(TESTSUITE) > DISTCLEANFILES += %D%/atconfig %D%/testsuite.log > > TESTSUITE = testsuite > > check-local: %D%/atconfig %D%/$(TESTSUITE) > cd %D%; \ > if test -f '$(TESTSUITE)' ; then d=; else d='$(abs_top_srcdir)/%D%/' ; fi > ;\ > $(SHELL) $$d'$(TESTSUITE)' AUTOTEST_PATH='$(abs_builddir)/%D%' > $(TESTSUITEFLAGS) > > installcheck-local: %D%/atconfig %D%/$(TESTSUITE) > cd %D%; \ > if test -f '$(TESTSUITE)' ; then d=; else d='$(abs_top_srcdir)/%D%/' ; fi > ;\ > $(SHELL) $$d'$(TESTSUITE)' AUTOTEST_PATH='$(abs_builddir)/%D%' > $(TESTSUITEFLAGS) > > clean-local: > test ! -f '%D%/$(TESTSUITE)' || $(SHELL) '%D%/$(TESTSUITE)' --clean > > AUTOM4TE = $(SHELL) $(top_srcdir)/build-aux/missing --run autom4te > AUTOTEST = $(AUTOM4TE) --language=autotest > > %D%/$(TESTSUITE): %D%/testsuite.at %D%/package.m4 > $(AUTOTEST) -I '$(srcdir)' -I '%D%' -o $@.tmp $@.at > mv $@.tmp $@
We were doing something similar in msitools (https://wiki.gnome.org/msitools). The main differences are: (1) Generating package.m4 from configure, like AC_CONFIG_FILES([tests/package.m4.tmp:tests/package.m4.in], [$srcdir/build-aux/move-if-change tests/package.m4.tmp $srcdir/tests/package.m4 cp $srcdir/tests/package.m4 tests/package.m4.tmp]) $ cat tests/package.m4.in # Signature of the current package. m4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@]) m4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@]) m4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@]) m4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@]) m4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@]) m4_define([AT_PACKAGE_URL], [@PACKAGE_URL@]) (2) check-local and installcheck-local are simpler: check-local: $(srcdir)/tests/testsuite atconfig atlocal $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=. $(TESTSUITEFLAGS) installcheck-local: $(srcdir)/tests/testsuite atconfig atlocal $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=$(bindir) $(TESTSUITEFLAGS) (Your check-local seems ok, installcheck-local seems the same as check-local so it doesn't look right to me). (3) clean-local is simply using "-": clean-local: -$(SHELL) $(srcdir)/tests/testsuite --clean Paolo