When I try this, I don't see following targets being built -- just the targets that were touched.
The issue here is that makepp assumes that the build info is no longer valid because the timestamp changed, and therefore you could have modified the file. Makepp is somewhat pessimistic, and rather than recomputing the MD5 to see if the build info is valid, it will just rebuild the touched target.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
<<< Begin Makefile
%.a: %.z : signature md5
echo "test" > $@
%.b: %.a : signature md5
echo "test" > $@
%.c: %.b : signature md5
echo "test" > $@
<<< End Makefile
After successfull build of all target I do a "touch on a.z"
-> as expected nothing will be rebuild.
But if I touch a.a or a.b the following targets will be rebuild.
Does md5 has not effect on targets?
Sometimes the timestamp changes of target and the rebuild is very expensive.
Marc
When I try this, I don't see following targets being built -- just the targets that were touched.
The issue here is that makepp assumes that the build info is no longer valid because the timestamp changed, and therefore you could have modified the file. Makepp is somewhat pessimistic, and rather than recomputing the MD5 to see if the build info is valid, it will just rebuild the touched target.
This has since long worked as expected. In fact makeppreplay / mppr makes use of this to save makepp / mpp recompilations.