Status and rationale for toplevel bootstrap (was Re: Example of debugging GCC with toplevel bootstrap)
Paolo Bonzini
paolo.bonzini@lu.unisi.ch
Mon Jan 16 14:48:00 GMT 2006
Richard Kenner wrote:
> If you configure with --enable-languages=c,ada (which I guess is a good
> option for you), a toplevel "make" does everything you need -- nothing
> less, nothing more.
>
>No, I want to configure with all the languages since I want to build them
>all (and have to, in order to do a full "make check"). We're talking
>about limiting what's built during each testing step, not limiting what
>*can* be built.
>
>
Okay. Things start to take a shape. Then it seems to me that you are
just relying on a peculiarity of the Ada build system, that is the fact
that you can work entirely from within the GCC directory. This is true
nowadays even though it's been *years* since GCC won't run except within
the Cygnus tree (aka toplevel). For every other language, this point
would have been moot because they never had anything like
"gnatlib_and_tools".
What you want is making the GNAT RTS and tools after fixing the bug and
bootstrapping the compiler, and before testing everything, just as a
quick smoke test. What you need to do then, is to run from the toplevel
"make stage3-bubble; make -C gcc gnatlib_and_tools".
If "make stage1-bubble" is the equivalent of "make" within the gcc
directory, then "make stage3-bubble" is the equivalent of "make
bootstrap" within the gcc directory. Plus, of course, there are
"stage2-bubble" and "stage4-bubble" in case you find them useful.
>Because doing more than just building the GNAT RTS and tools will greatly
>slow down my developement cycle. Sure, when I'm ready for a final test,
>I need to build everything, but not normally.
>
>
However, with libada enabled, "make all-target-libada all-gnattools"
from the toplevel would be exactly the same as "make gnatlib_and_tools"
from the gcc directory. A bit more verbose, I grant you this.
>Secondly, from my perspective, what I saw was a proposal to *enhance*
>bootstrapping.
>
From the original proposal, submitted September 2004: "For a while,
old-style bootstrap will still be available with ./configure
--disable-bootstrap; make bootstrap (non intuitive maybe, but in the
long term, it would only be one more historic wart if the flag was
called --{enable,disable}-toplevel-bootstrap)."
>What I *didn't* see was a discussion where things were being proposed to be
>*removed*.
>
*Moved*, not removed. Moved from the gcc directory to the toplevel.
>But why is this a "show-stopper"? Why can't the target just be added back?
>
>
For now, everything is compatible with --disable-bootstrap. I can
imagine that when we start relying on the advantages of toplevel
bootstrap, things would not be so easy. But I am confident that things
will be sorted out before that.
Paolo
More information about the Gcc
mailing list