fixincl now run at every stage?
Mon Jan 31 10:55:00 GMT 2000
On Mon, Jan 31, 2000 at 01:38:13PM -0500, Kaveh R. Ghazi wrote:
> > From: Zack Weinberg <email@example.com>
> > On Sun, Jan 30, 2000 at 01:40:49PM -0500, Kaveh R. Ghazi wrote:
> > >
> > > With current CVS, fixincl is run at every stage. I thought it
> > > was only supposed to run at stage1. Is this intentional?
> > It certainly wasn't my intent; I thought it was only supposed to run
> > in stage1, too.
> > zw
> Scanning recent Makefile.in changes, I'm going to hazard a guess that
> this was the culprit:
> > 2000-01-20 Zack Weinberg <firstname.lastname@example.org>
> > * Makefile.in (fixinc.sh): Depend on specs.
> Because "specs" is part of $(STAGESTUFF), We move "specs" into the
> stageN dir between stages so it gets rebuilt. Then fixinc.sh gets
> rebuilt, which triggers the stmp-fixinc target, which reruns fixinc.sh
> at every stage.
Aaaigh! Unintended consequences strike again...
> It may correct this to remove "specs" from $(STAGESTUFF). But I'm not
> sure what side effect that would have.
My first reaction is that's not safe, but actually there is no good
reason why the specs should change from pass to pass, so maybe we can
get away with it. Jeff?
Failing that, well, there is a genuine dependency of fixinc.sh on
specs (via fixinc/machname.h). But that doesn't mean the second and
third passes have to even consider updating stmp-int-headers (ergo
stmp-fixinc). We could make the stage build targets depend only on
the things that really do need to be rebuilt at that stage.
Note that libgcc (at least the part built with gcc) probably _should_
be rebuilt at each stage. [Side note: I'd like to kill the special
casing for libgcc1.c, build it with gcc always, and require tm.h to
provide perform macros. Or just kill it entirely and require each
target to provide an .S file...]
More information about the Gcc-bugs