diff --git a/pd/src/makefile.in b/pd/src/makefile.in
index 70318c4f560fae880a2e2be55d7b4a2a65caaa57..533dd3a6c02339ba411d71a0b3f979d36e7befae 100644
--- a/pd/src/makefile.in
+++ b/pd/src/makefile.in
@@ -100,8 +100,10 @@ endif
 # AG: Pd-l2ork version number
 PD_L2ORK_VERSION := $(shell grep PD_L2ORK_VERSION m_pd.h | \
 	sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|' )
-PD_BUILD_VERSION := $(shell grep PD_BUILD_VERSION s_stuff.h | \
-	sed 's|^.define *PD_BUILD_VERSION *"\(.*\)".*|\1|' )
+# This is replicated from packages/Makefile.buildlayout. XXXFIXME: Right now
+# you have to manually keep these two definitions in sync; if you edit one of
+# them, you should also edit the other.
+PD_BUILD_VERSION := $(shell git log -1 --format=%cd --date=short | sed -e 's/-//g')-rev.$(shell git rev-parse --short HEAD)
 
 #
 #  ------------------ targets ------------------------------------
@@ -241,7 +243,7 @@ extra-clean:
 clean: extra-clean local-clean
 
 distclean: clean
-	-rm -f config.cache config.log config.status makefile tags \
+	-rm -f s_stuff.h config.cache config.log config.status makefile tags \
 		autom4te.cache/output.* autom4te.cache/traces.* autom4te.cache/requests
 	-rmdir autom4te.cache
 	-rm -rf autom4te-*.cache
@@ -250,9 +252,12 @@ tags: $(SRC); ctags *.[ch]
 
 depend: makefile.dependencies
 
-makefile.dependencies: makefile
+makefile.dependencies: makefile s_stuff.h
 	$(CC) $(CPPFLAGS) -M $(SRC) > makefile.dependencies
 
+s_stuff.h: s_stuff.h.in
+	sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' $< > $@
+
 uninstall:
 	rm -f -r $(DESTDIR)$(libpddir)
 	rm -f $(DESTDIR)$(bindir)/@PDEXEC@
diff --git a/pd/src/makefile.mingw b/pd/src/makefile.mingw
index 1dba6162a49e2277dac39e04a3efb83af6bdef8d..15cc0529540208c9c8745bcf8c1c7f1903801478 100755
--- a/pd/src/makefile.mingw
+++ b/pd/src/makefile.mingw
@@ -151,8 +151,7 @@ endif
 # AG: Pd-l2ork version number
 PD_L2ORK_VERSION := $(shell grep PD_L2ORK_VERSION m_pd.h | \
 	sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|' )
-PD_BUILD_VERSION := $(shell grep PD_BUILD_VERSION s_stuff.h | \
-	sed 's|^.define *PD_BUILD_VERSION *"\(.*\)".*|\1|' )
+PD_BUILD_VERSION := $(shell git log -1 --format=%cd --date=short | sed -e 's/-//g')-rev.$(shell git rev-parse --short HEAD)
 
 
 #
@@ -166,6 +165,9 @@ all: config.h $(PDDLL) $(PDEXEC) pdsend.exe pdreceive.exe pd.com externs
 config.h: config.h.in
 	cp config.h.in config.h
 
+s_stuff.h: s_stuff.h.in
+	sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' $< > $@
+
 $(OBJ) : %.o : %.c
 	$(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $*.o $*.c 
 
@@ -323,7 +325,7 @@ clean:
 	-rm -f makefile.dependencies
 
 distclean: clean
-	rm -rf -- config.cache config.log config.status makefile tags \
+	rm -rf -- s_stuff.h config.cache config.log config.status makefile tags \
 	     autom4te-*.cache
 
 tags: $(SRC) $(GSRC); ctags *.[ch]