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

Reply via email to