This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PR/25670 and other toplevel bootstrap compatibility improvements


?
This patch adds more features to toplevel bootstrap that were undocumented in the old build system. Thanks to all these people that reported their workflows, so that I can work to support them.

The patch is logically split in two parts, one for the toplevel and one for the gcc directory.

First, the stage_current file was looked for unconditionally, even if it does not exist right after configuring the toplevel. This never happens when using the documented targets, but causes a `../configure && make all-stage1-gcc' to fail. A related buglet, that showed up in the same conditions is that the `r' and `s' variables were not set for targets such as `make all-stage1-gcc'. I believe that this was introduced recently with Dan's fixes for multilibbed bootstrapped target libraries; anyway all these robustness problems are fixed by the first hunks below.

The toplevel part also fixes PR25670, the inability to do a `make all-gcc' after configuring, reported by Gabor Loki and Joern Rennecke. One could say that the bug is not that the build fails, but that it fails after a while. Still, it was easier to have such targets be synonyms for stage1 builds (for example `make all-stage1-gcc') *if the build had not been started at all*. The patch does this, but at the end prints a hint that you should use either `make all-stage1-gcc' or `make stageN-bubble' to continue.

Finally, as mentioned in my message about how I debugged PR25578, the patch provides an implementation of `make restrap'. This is slightly different from the old build system, as it just removes everything built after stage1 gcc, and start a full build. This is helpful when the stage1 compiler miscompiled the second stage, for example.

The GCC part includes all the language Makefile fragments within the GCC Makefile, even for non-configured languages. These fragments, of course, are disabled by default, as are the specs fragments. This does not change the driver's behavior but is enough to support, for example, `make cc1plus' in the stage1 build directory, as requested by Diego Novillo. This part is shorter than it looks in the diff, because of reindentation.

Also, since I merged two loops that were using respectively `subdir' and `s' as the variable to indicate the language subdirectory, I changed everything to the longer form.

Ok for mainline?

Paolo

Attachment: pr25670.patch
Description: pr25670.patch


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]