According to a comment in line 2694 of gcc/Makefile.in, a dummy command like @true must be added to a rule to "force gnu make to recheck modification times.".
But the GNU make manual says that a rule without a command simply states a dependency. In gcc, many of those "dependency only" rules depend on a stamp. A hack that may be used to remove the stamp itself is to use a pattern rule where the % matches just a single character (the . for example). Attached are three makefiles that illustrate the alternatives: Makefile1: uses a pattern rule Makefile2: uses a rule without a command Makefile3: uses a rule with a dummy command (the current way) All the three makefiles behave the same. I will try to change gcc's makefiles and, if all goes well, submit a patch (for 4.2). Rafael
all: foo.c bar.h foo%c bar%h: gen touch foo.c touch bar.h
all: foo.c bar.h foo.c bar.h: s-gen s-gen: gen touch foo.c touch bar.h touch s-gen
all: foo.c bar.h foo.c bar.h: s-gen @true s-gen: gen touch foo.c touch bar.h touch s-gen