we use the following logic: ... : @for f in $? $@; do test -f $$f || exit 0; done; \ echo Touching [EMAIL PROTECTED]; \ touch $@
We have the following chain of dependencies: gcc/configure: gcc/configure.ac gcc/cstamp-h.in: gcc/configure.ac gcc/config.in: gcc/cstamp-h.in In my particular build, for some reason, gcc/cstamp-h.in is missing but the other files are there. I now have four gcc_update tasks running, trying desparately to figure out what to do. It won't touch gcc/cstamp-h.in becuase of the @for line, but it always thinks it needs to update gcc/config.in because gcc/cstamp-h.in is missing. Note that gcc/cstamp-in.h is NOT listed in $?, which is a list of newer prereqs - but not *missing* prereqs. Perhaps we should use $^, which is a list of all prereqs? That leaves us not touching gcc/config.in at all, but at least it doesn't hang. At the very least, some sanity about how many times we permit ourselves to run that Makefile would be useful. I mean, if it doesn't work in the first 345,600 iterations, it's not ever going to work.