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 [email protected] [email protected]
> mv [email protected] $@
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