This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: What happend to bootstrap-lean? (was: What happened to bubblestrap?)
- From: Daniel Jacobowitz <drow at false dot org>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 18 Dec 2005 12:21:57 -0500
- Subject: Re: What happend to bootstrap-lean? (was: What happened to bubblestrap?)
- References: <10512181712.AA09047@vlsi1.ultra.nyu.edu>
On Sun, Dec 18, 2005 at 12:12:17PM -0500, Richard Kenner wrote:
> Backwards compatibility is indeed expensive, but is critical. All vendors
> do it and we need to as well. You can be certain that if there were six
> ways of specifying something in VMS on a VAX in 1979, all six will still
> work today on all VMS targets. There's a reason for that: the users demand
> and expect it.
I am perfectly willing to maintain backwards compatibility for _users_
of GCC. Most users of GCC don't build GCC, and most builders of GCC
really don't use the full expressiveness of the build system. I
disagree with the assertion that we need to maintain "compatibility" in
our Makefiles. Obviously we want to in as much as it is practical;
this isn't.
And don't you think that talking about compatibility expected by our
users is just a little bit disingenuous, when you're talking about
running make inside the gcc subdirectory? Users don't do that!
Only developers of GCC do. It's only useful for incremental builds; a
full build of GCC always starts and ends in the top level.
> ./configure &&
> make bootstrap is going to continue working, presumably forever.
>
> I thought the whole point was that "bootstrap" wasn't a target at the top
> level, but just in the gcc/ directory, so that the above did *not* work.
Huh? Are you talking about before, or after, the changes? "bootstrap"
has always been a target at the top level. It used to be implemented
by building a bunch of other stuff and then forwarding to a bootstrap
target in the gcc subdirectory and then building another bunch of
stuff, but is no longer.
> Any such build script - we've got plenty of our own here, thanks -
> grows little widgets over time to handle particular configurations and
> particular versions of GCC, in my experience.
>
> Sure, but the issue is the *size* of the differences. Are we talking about
> something subtle or a completely different sequence of make targets?
Paolo already answered this question, in a message directly to you:
http://gcc.gnu.org/ml/gcc/2005-12/msg00490.html
> But if you insist that you must continue to run 'make' in the gcc
> subdirectory, you won't get a bootstrap, just a rebuild of the current
> stage.
>
> You lost me. "make" in the gcc subdirectory would always build into that
> directory using the system compiler (i.e., what you'd normally use to build
> the stage1 compiler), not do a bootstrap. It was "make bootstrap" that would
> continue the bootstrap from the current location.
I was referring to "make $(anything)", i.e. the command /usr/bin/make.
> In my experience, the four most common targets in the gcc subdirectory were:
>
> <empty>, as above
> bootstrap, as above
> compare, the obvious
> unstage1, to undo a "make bootstrap"
>
> I think those four targets need to keep working because they are also the
> oldest targets. I certainly agree that it's reasonable to change the way
> that the lesser-used targets are executed, so long as there's a
> clearly-documented mapping. However, I also don't see why we can't simply
> put that target into gcc/Makefile.in to simply recursively execute the make
> with the equivalent target. That does not have the maintenance burden you
> suggest above.
Because it would have to recurse to the parent directory, which is then
going to rename your current directory and do bits elsewhere, in other
directories; it's likely to leave you far away from the results of your
make. Do you really think that'll leave you any less confused? I'd be
baffled! I hate it when things rename my $PWD.
--
Daniel Jacobowitz
CodeSourcery, LLC