Matthias Klose wrote:
Building the new alpha based on gcc-2.95.[34] using the bootstrap process fails with:
make[5]: Entering directory `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/build-native/gcc/ch' make[5]: *** No rule to make target `../cc1chill'. Stop. make[5]: Leaving directory `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/build-native/gcc/ch' make[4]: *** [cc1chill] Error 2
It is necessary to build the CHILL language as well to see this failure. The same setup works using gpc-20020910.tar.gz. Comparing the build logs during configure you see the following differences:
@@ -859,16 +851,7 @@ creating cp/Makefile creating f/Makefile creating auto-host.h -linking /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/intl/libgettext.h to intl/libintl.h -Merged x-linux. -Merged t-linux and i386/t-crtstuff and t-install-cpp. -Created `ch/Makefile'. -Merged x-linux. -Merged t-linux and i386/t-crtstuff and t-install-cpp. -Created `objc/Makefile'. -Merged x-linux. -Merged t-linux and i386/t-crtstuff and t-install-cpp. -Created `p/Makefile'. +linking /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/intl/libgettext.h to intl/libintl.h creating libintl.h Configuring etc... loading cache ../config.cache
Here you see, that the t-linux files don't get merged and the ch, objc and p Makefiles are not created.
So what's different/wrong? Removing the two patches in the gcc-2.95.3 diff to
*** gcc/configure.orig Mon Apr 9 11:27:06 2001 --- gcc/configure Thu Nov 14 16:36:27 2002
and
*** gcc/configure.lang.orig Thu Nov 14 17:05:00 2002 --- gcc/configure.lang Thu Nov 14 17:05:09 2002
correctly generates the other Makefiles, but then stops in the p sub directory:
Bootstrapping the compiler make[3]: Entering directory `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/build-native/gcc' make[3]: *** No rule to make target `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/p/Makefile.in', needed by `Makefile'. Stop. make[3]: Leaving directory `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/build-native/gcc' make[2]: *** [bootstrap-lean] Error 2
The relevant change seems to be:
2002-11-14 16:59 Frank Heckenbach frank@pascal.gnu.de
* config-lang.in: create a dummy Makefile.in if needed (can't always be avoided, it seems)-: ...
So this does not seem to work (src != build in my case)
I don't think src and build matter here. But it may be done too late in the process, especially if other languages (except C) are involved.
If that's the whole problem, just create an empty p/Makefile.in before starting.
* Makefile.in: merged with Make-lang.in; file removed
How to undo/revert this?
Not really. ;-)
The main issue is that gcc-2 seems to require (intentionally or by bug, I don't know) a Makefile.in for each language, while gcc-3 at least recommends if not demands to have no such file (which I also prefer).
With the patches in configure I tried to amend gcc-2. In my tests (but only building Pascal and C), this seemed to work, except for one problem: When p/config-lang.in runs, configure is already running and patching it is too late. So we have to create an empty p/Makefile.in, anyway. (But only the first time. Once you build GPC again with an already patched GCC, it works without it.)
Frank