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.

[originally from svn r8931]
This commit is contained in:
Simon Tatham
2010-04-25 14:57:21 +00:00
parent 178f87a79e
commit 36cee4e279

61
Recipe
View File

@ -110,52 +110,65 @@ FORCE:
# For Unix, we also need the gross MD5 hack that causes automatic # For Unix, we also need the gross MD5 hack that causes automatic
# version number selection in release source archives. # version number selection in release source archives.
!begin gtk !begin gtk
version.o: FORCE; version.o: version.c version2.def
FORCE: $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c
version2.def: FORCE
if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ 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 \ 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 \ else \
$(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ echo "$(VER)" >version2.def.new; \
fi && \
if diff -q version2.def.new version2.def; then \
rm version2.def.new; \
else \
mv version2.def.new version2.def; \
fi fi
.PHONY: FORCE
!end !end
!specialobj gtk version !specialobj gtk version
!begin nestedvm !begin nestedvm
version.o: FORCE; version.o: version.c version2.def
FORCE: $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c
version2.def: FORCE
if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ 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 \ 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 \ else \
$(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ echo "$(VER)" >version2.def.new; \
fi && \
if diff -q version2.def.new version2.def; then \
rm version2.def.new; \
else \
mv version2.def.new version2.def; \
fi fi
.PHONY: FORCE
!end !end
!specialobj nestedvm version !specialobj nestedvm version
# For OS X, this is made more fiddly by the fact that we don't have # 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 # md5sum readily available. We do, however, have `md5 -r' which
# generates _nearly_ the same output, but it has no check function. # generates _nearly_ the same output, but it has no check function.
!begin osx !begin osx
version.ppc.o: FORCE; version.ppc.o: version.c version2.def
FORCE: $(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 \ 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 \ 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 \ else \
$(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c -o version.ppc.o; \ echo "$(VER)" >version2.def.new; \
fi fi && \
version.i386.o: FORCE2; if diff -q version2.def.new version2.def; then \
FORCE2: rm version2.def.new; \
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; \
else \ else \
$(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c -o version.i386.o; \ mv version2.def.new version2.def; \
fi fi
!end .PHONY: FORCE
!specialobj osx version !specialobj osx version
# make install for Unix. # make install for Unix.