2006-04-05 Noah Misch and Stepan Kasal Do not rebuild `testsuite' when a lib/autoconf/*.m4 edit does not affect the generated test cases. * tests/mktests: Only touch the products if they would change. * tests/Makefile.am: Do not call the autom4te for $(TESTSUTE) directly, use a new rule for $(TESTSUTE).tmp. Move these rules from the ``maintainer section'' up. Do not distribute $(TESTSUITE_GENERATED_AT). (MAINTAINERCLEANFILES): Remove. Index: tests/Makefile.am =================================================================== RCS file: /cvsroot/autoconf/autoconf/tests/Makefile.am,v retrieving revision 1.100 diff -u -r1.100 Makefile.am --- tests/Makefile.am 9 Apr 2006 11:36:08 -0000 1.100 +++ tests/Makefile.am 9 Apr 2006 14:01:41 -0000 @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in. -*-Makefile-*- ## Makefile for Autoconf testsuite. -## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 +## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 ## Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify @@ -21,13 +21,12 @@ # We don't actually distribute the testsuite, since one only # needs m4 to build it, m4 being required anyway to install Autoconf. -EXTRA_DIST = $(TESTSUITE_AT) local.at mktests.sh \ +EXTRA_DIST = $(TESTSUITE_HAND_AT) local.at mktests.sh \ atlocal.in package.m4 wrapper.as # Running the uninstalled scripts. check_SCRIPTS = $(wrappers) -DISTCLEANFILES = atconfig atlocal $(TESTSUITE) -MAINTAINERCLEANFILES = Makefile.in +DISTCLEANFILES = atconfig atlocal $(TESTSUITE) $(TESTSUITE_GENERATED_AT) # Import the dependencies on Autotest and M4sh. include ../lib/freeze.mk @@ -79,20 +78,36 @@ ## Test suite. ## ## ------------ ## +# The files which contain macros we check for syntax. +AUTOCONF_FILES = \ + $(top_srcdir)/lib/autoconf/general.m4 \ + $(top_srcdir)/lib/autoconf/status.m4 \ + $(top_srcdir)/lib/autoconf/autoheader.m4 \ + $(top_srcdir)/lib/autoconf/autoupdate.m4 \ + $(top_srcdir)/lib/autoconf/specific.m4 \ + $(top_srcdir)/lib/autoconf/functions.m4 \ + $(top_srcdir)/lib/autoconf/lang.m4 \ + $(top_srcdir)/lib/autoconf/c.m4 \ + $(top_srcdir)/lib/autoconf/fortran.m4 \ + $(top_srcdir)/lib/autoconf/headers.m4 \ + $(top_srcdir)/lib/autoconf/libs.m4 \ + $(top_srcdir)/lib/autoconf/types.m4 \ + $(top_srcdir)/lib/autoconf/programs.m4 + TESTSUITE_GENERATED_AT = \ - $(srcdir)/aclang.at \ - $(srcdir)/acc.at \ - $(srcdir)/acfortran.at \ - $(srcdir)/acgeneral.at \ - $(srcdir)/acstatus.at \ - $(srcdir)/acautoheader.at \ - $(srcdir)/acautoupdate.at \ - $(srcdir)/acspecific.at \ - $(srcdir)/acfunctions.at \ - $(srcdir)/acheaders.at \ - $(srcdir)/actypes.at \ - $(srcdir)/aclibs.at \ - $(srcdir)/acprograms.at + aclang.at \ + acc.at \ + acfortran.at \ + acgeneral.at \ + acstatus.at \ + acautoheader.at \ + acautoupdate.at \ + acspecific.at \ + acfunctions.at \ + acheaders.at \ + actypes.at \ + aclibs.at \ + acprograms.at TESTSUITE_HAND_AT = \ suite.at \ @@ -103,21 +118,28 @@ autoscan.at \ foreign.at -TESTSUITE_AT = $(TESTSUITE_GENERATED_AT) $(TESTSUITE_HAND_AT) TESTSUITE = ./testsuite # Run the non installed autom4te. # Don't use AUTOM4TE since `make alpha' makes it unavailable although # we are allowed to use it (since we ship it). AUTOTEST = ./autom4te --language=autotest -$(TESTSUITE): $(srcdir)/package.m4 \ - local.at \ - $(TESTSUITE_AT) \ - $(autotest_m4f_dependencies) - cd $(top_builddir)/lib/autotest && $(MAKE) $(AM_MAKEFLAGS) autotest.m4f - $(AUTOTEST) -I $(srcdir) suite.at -o address@hidden + +# All the dependencies, except the generated *.at files: +TESTSUITE_dependencies = $(srcdir)/package.m4 local.at \ + $(autotest_m4f_dependencies) $(TESTSUITE_HAND_AT) mktests.sh + +$(TESTSUITE): $(TESTSUITE_dependencies) $(AUTOCONF_FILES) + $(srcdir)/mktests.sh $(AUTOCONF_FILES) + mv $@ address@hidden + $(MAKE) $(AM_MAKEFLAGS) address@hidden + touch address@hidden mv address@hidden $@ +$(TESTSUITE).tmp: $(TESTSUITE_dependencies) $(TESTSUITE_GENERATED_AT) + cd $(top_builddir)/lib/autotest && $(MAKE) $(AM_MAKEFLAGS) autotest.m4f + $(AUTOTEST) -I $(srcdir) suite.at -o $@ + atconfig: $(top_builddir)/config.status cd $(top_builddir) && ./config.status tests/$@ @@ -139,33 +161,6 @@ ## Maintainer rules. ## ## ------------------ ## -MAINTAINERCLEANFILES += $(TESTSUITE_GENERATED_AT) - -## Producing the test files. - -# The files which contain macros we check for syntax. Use $(top_srcdir) -# for the benefit of non-GNU make. Fix the names in the rule below -# where we `cd' to $srcdir. -autoconfdir = $(top_srcdir)/lib/autoconf -AUTOCONF_FILES = $(autoconfdir)/general.m4 \ - $(autoconfdir)/status.m4 \ - $(autoconfdir)/autoheader.m4 \ - $(autoconfdir)/autoupdate.m4 \ - $(autoconfdir)/specific.m4 \ - $(autoconfdir)/functions.m4 \ - $(autoconfdir)/lang.m4 \ - $(autoconfdir)/c.m4 \ - $(autoconfdir)/fortran.m4 \ - $(autoconfdir)/headers.m4 \ - $(autoconfdir)/libs.m4 \ - $(autoconfdir)/types.m4 \ - $(autoconfdir)/programs.m4 - -$(TESTSUITE_GENERATED_AT): mktests.sh $(AUTOCONF_FILES) - cd $(srcdir) && ./mktests.sh \ - `echo " "$(AUTOCONF_FILES) | sed 's, [^ ]*/, ../lib/autoconf/,g'` - - ## maintainer-check ## maintainer-check: maintainer-check-posix maintainer-check-c++ Index: tests/mktests.sh =================================================================== RCS file: /cvsroot/autoconf/autoconf/tests/mktests.sh,v retrieving revision 1.53 diff -u -r1.53 mktests.sh --- tests/mktests.sh 8 Apr 2006 21:44:13 -0000 1.53 +++ tests/mktests.sh 9 Apr 2006 14:01:41 -0000 @@ -217,12 +217,20 @@ # preserves the old version of the file. If there is nothing to # check, output /rien du tout/[1]. if grep AT_CHECK ac$base.tat >/dev/null 2>&1; then - mv -f ac$base.tat ac$base.at - # Help people not to update these files by hand. - chmod a-w ac$base.at + if diff ac$base.at ac$base.tat >/dev/null 2>&1; then + rm -f ac$base.tat + else + diff ac$base.at ac$base.tat || : + mv -f ac$base.tat ac$base.at + # Help people not to update these files by hand. + chmod a-w ac$base.at + fi else - rm -f ac$base.tat ac$base.at - touch ac$base.at + rm -f ac$base.tat + if test \! -f ac$base.at || test -s ac$base.at; then + rm -f ac$base.at + touch ac$base.at + fi fi done