Building a non-bootstrap native gcc with selected target libraries doesn't work anymore. on an i686-pc-linux-gnu host in a directory parallel to a unified symlink tree in ../srcw , I configured with: ../srcw/configure --with-arch=i686 and then started make with: make all-gcc all-target-libstdc++-v3 all-target-libobjc make built libiberty, then proceeded configuring gcc, but failed with: Using ggc-page for garbage collection. checking whether to enable maintainer-specific portions of Makefiles... no Links are now set up to build a native compiler for i686-pc-linux-gnu. updating cache ./config.cache configure: creating ./config.status config.status: creating Makefile config.status: creating gccbug config.status: creating mklibgcc config.status: creating libada-mk config.status: creating auto-host.h config.status: executing default commands cat: stage_last: No such file or directory make: invalid option -- a Usage: make [options] [target] ... Options: -b, -m Ignored for compatibility. -C DIRECTORY, --directory=DIRECTORY Change to DIRECTORY before doing anything. -d Print lots of debugging information. --debug[=FLAGS] Print various types of debugging information. -e, --environment-overrides Environment variables override makefiles. -f FILE, --file=FILE, --makefile=FILE Read FILE as a makefile. -h, --help Print this message and exit. -i, --ignore-errors Ignore errors from commands. -I DIRECTORY, --include-dir=DIRECTORY Search DIRECTORY for included makefiles. -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. -k, --keep-going Keep going when some targets can't be made. -l [N], --load-average[=N], --max-load[=N] Don't start multiple jobs unless load is below N. -n, --just-print, --dry-run, --recon Don't actually run any commands; just print them. -o FILE, --old-file=FILE, --assume-old=FILE Consider FILE to be very old and don't remake it. -p, --print-data-base Print make's internal database. -q, --question Run no commands; exit status says if up to date. -r, --no-builtin-rules Disable the built-in implicit rules. -R, --no-builtin-variables Disable the built-in variable settings. -s, --silent, --quiet Don't echo commands. -S, --no-keep-going, --stop Turns off -k. -t, --touch Touch targets instead of remaking them. -v, --version Print the version number of make and exit. -w, --print-directory Print the current directory. --no-print-directory Turn off -w, even if it was turned on implicitly. -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE Consider FILE to be infinitely new. --warn-undefined-variables Warn when an undefined variable is referenced. Report bugs to <bug-make@gnu.org>. make: *** [configure-build-libiberty] Error 2
Subject: Re: New: selective non-bootstrap build broken On Fri, Jan 06, 2006 at 04:27:16PM -0000, amylaar at gcc dot gnu dot org wrote: > Building a non-bootstrap native gcc with selected target libraries > doesn't work anymore. > > on an i686-pc-linux-gnu host in a directory parallel to a unified symlink tree > in ../srcw , I configured with: > > ../srcw/configure --with-arch=i686 > > and then started make with: > > make all-gcc all-target-libstdc++-v3 all-target-libobjc For now try this plus --disable-bootstrap. This is trying to build stage 1. Obviously we need to reconsider the --enable/--disable switch since it's generating so many complaints.
The toplevel makefile has a target 'all' which allegedly does a native non-bootstrap build. However, that still does a multi-stage build, thus building everything that is intended to be debugged with a compiler that isn't trusted to generate correct code, and will most of the time emit debug information that the (presumably stable) system gdb won't understand. A true one-stage buld is essential for reliable debugging. And for reasonable turn-around times during bug fixing, it is also important that you can cd to the gcc directory and re-build cc1 using 'make cc1', and this will only rebuild files where the sources are changed, or the .o files have been removed by hand (I often do that in order to remove optimization for a module under investigation). I don't mind adding --disable-bootstrap to my configure lines; however, the toplevel bootstrap documentation in the wiki seems to imply that this option has been removed or is intended for removal before the 4.2 release. I would consider the removal of this option without another way to get the functionality a showstopper. There is also the issue that the target 'all-gcc' exists in Makefiles generated without --disable-bootstrap, but it doesn't work, and this failure is only apparent after a considerable time building and configuring sources has passed.
*** This bug has been marked as a duplicate of 25670 ***