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:
@@ -703,7 +697,7 @@ creating po/Makefile.in creating util/Makefile creating config.h -linking /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/texinfo/intl/libgettext.h to intl/libintl.h +linking /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/texinfo/intl/libgettext.h to intl/libintl.h Configuring gcc... loading cache ../config.cache checking LIBRARY_PATH variable... ok @@ -808,10 +802,10 @@ checking whether setrlimit must be declared... no checking for sys_siglist declaration in signal.h or unistd.h... yes checking if mkdir takes one argument... no -Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/config/i386/i386.c' to output insns. -Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/config/i386/i386.md' as machine description file. -Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/config/i386/linux.h' as target machine macro file. -Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/config/i386/xm-i386.h' as host machine macro file. +Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/config/i386/i386.c' to output insns. +Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/config/i386/i386.md' as machine description file. +Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/config/i386/linux.h' as target machine macro file. +Using `/build/packages/gcc/2.95/gcc-2.95-2.95.4.ds15/src-native/gcc/config/i386/xm-i386.h' as host machine macro file. checking for strerror in -lcposix... no checking for working const... (cached) yes checking for inline... (cached) inline @@ -847,8 +841,6 @@ checking assembler subsection support... working .subsection -1 checking assembler hidden support... yes checking assembler instructions... filds fists -Adjusting /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/p/Makefile.in for gcc>2.8.1 -Adjusting /build/packages/gcc/2.95/gcc-2.95-2.95.4.ds14/src-native/gcc/p/Make-lang.in for gcc>2.8.1 Links are now set up to build a native compiler for i386-pc-linux-gnu updating cache ../config.cache creating ./config.status @@ -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)
* diffs/gcc-2.*.diff: patch the gcc configure to check if <language>/Makefile.in exists before trying to use it (code taken from the configure of gcc-3.1.1); similarly for configure.lang
Tried to revert it.
* Makefile.in: merged with Make-lang.in; file removed
How to undo/revert this?
Thanks for any help
Matthias
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