From: simon Date: Sun, 25 Apr 2010 14:57:21 +0000 (+0000) Subject: Modification of a patch from Debian: eliminate the endless rebuilds X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/commitdiff_plain/68fc254beda8c7ec5b6f738d4a3ef3f08ac5da57 Modification of a patch from Debian: eliminate the endless rebuilds of basically unchanged binaries due to the compulsory rebuild of version.o. version.o now depends normally on version2.def, which is constructed using much the same if statements that version.o used to use, except that it's not overwritten at all if its contents don't need to change. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@8931 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/Recipe b/Recipe index 3925447..e57e7cd 100644 --- a/Recipe +++ b/Recipe @@ -110,52 +110,65 @@ FORCE: # For Unix, we also need the gross MD5 hack that causes automatic # version number selection in release source archives. !begin gtk -version.o: FORCE; -FORCE: +version.o: version.c version2.def + $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c +version2.def: FORCE if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ + cat version.def > version2.def.new; \ elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ + echo "-DREVISION=`svnversion .`" >version2.def.new; \ + else \ + echo "$(VER)" >version2.def.new; \ + fi && \ + if diff -q version2.def.new version2.def; then \ + rm version2.def.new; \ else \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ + mv version2.def.new version2.def; \ fi +.PHONY: FORCE !end !specialobj gtk version !begin nestedvm -version.o: FORCE; -FORCE: +version.o: version.c version2.def + $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c +version2.def: FORCE if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ + cat version.def > version2.def.new; \ elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ + echo "-DREVISION=`svnversion .`" >version2.def.new; \ + else \ + echo "$(VER)" >version2.def.new; \ + fi && \ + if diff -q version2.def.new version2.def; then \ + rm version2.def.new; \ else \ - $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ + mv version2.def.new version2.def; \ fi +.PHONY: FORCE !end !specialobj nestedvm version # For OS X, this is made more fiddly by the fact that we don't have # md5sum readily available. We do, however, have `md5 -r' which # generates _nearly_ the same output, but it has no check function. !begin osx -version.ppc.o: FORCE; -FORCE: +version.ppc.o: version.c version2.def + $(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c +version.i386.o: version.c version2.def + $(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c +version2.def: FORCE if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \ - $(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c -o version.ppc.o; \ + cat version.def > version2.def.new; \ elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - $(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c -o version.ppc.o; \ + echo "-DREVISION=`svnversion .`" >version2.def.new; \ else \ - $(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c -o version.ppc.o; \ - fi -version.i386.o: FORCE2; -FORCE2: - if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \ - $(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c -o version.i386.o; \ - elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - $(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c -o version.i386.o; \ + echo "$(VER)" >version2.def.new; \ + fi && \ + if diff -q version2.def.new version2.def; then \ + rm version2.def.new; \ else \ - $(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c -o version.i386.o; \ + mv version2.def.new version2.def; \ fi -!end +.PHONY: FORCE !specialobj osx version # make install for Unix.