diff --git a/alib2/makefile b/alib2/makefile
index 6a71a60fff650f3b9aaab299036d31449afc971c..8ab84666eec6327ee1b4e2e3d24be39a0162bb32 100644
--- a/alib2/makefile
+++ b/alib2/makefile
@@ -48,7 +48,12 @@ obj/makefile:
 	echo "	cp makefile \$$@" >> $@
 	echo "" >> $@
 	echo "%/: FORCE | %/makefile" >> $@
-	echo "	\$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../" >> $@
+	echo "	@accesstime=\`stat -c %Y \$$@\`; \\" >> $@
+	echo "	\$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../; \\" >> $@
+	echo "	accesstime2=\`stat -c %Y \$$@\`; \\" >> $@
+	echo "	if [ "\$$\$$accesstime" -ne "\$$\$$accesstime2" ]; then \\" >> $@
+	echo "		touch .; \\" >> $@
+	echo "	fi" >> $@
 	echo "" >> $@
 	echo "FORCE:" >> $@
 	echo "" >> $@
@@ -98,7 +103,12 @@ test-obj/makefile:
 	echo "	cp makefile \$$@" >> $@
 	echo "" >> $@
 	echo "%/: FORCE | %/makefile" >> $@
-	echo "	\$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../" >> $@
+	echo "	@accesstime=\`stat -c %Y \$$@\`; \\" >> $@
+	echo "	\$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../; \\" >> $@
+	echo "	accesstime2=\`stat -c %Y \$$@\`; \\" >> $@
+	echo "	if [ "\$$\$$accesstime" -ne "\$$\$$accesstime2" ]; then \\" >> $@
+	echo "		touch .; \\" >> $@
+	echo "	fi" >> $@
 	echo "" >> $@
 	echo "FORCE:" >> $@
 	echo "" >> $@