[Bug ada/81878] --disable-bootstrap --enable-languages=ada fails
tnfchris at gcc dot gnu.org
Mon Oct 29 09:46:00 GMT 2018
--- Comment #40 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
> In most practical cases -B../../ is just redundant with $(CXX). It's only when you configure like Richard that you may run into issues, but then we can assume that we're on Linux so the paths are OK I think.
Ah ok, I'll update to trunk and run a bootstrap today then and submit a patch
--- Comment #41 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
Date: Mon Oct 29 09:45:50 2018
New Revision: 265583
Fix mingw-w64 Ada native bootstrap (PR81878).
Due to the changes in PR81878 builds of GCC8 and trunk are impossible
with Ada enabled.
The reason the patch breaks the bootstrap is due to how gnatlink receives it's
gnatlink is usually invoked as
$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
--GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
so it passes $(CC) and $(GCC_LINK) as quoted arguments to the program.
Because of this quotation the msys2 shell does not translate any paths in
$(CC) and $(GCC_LINK) from their Unix version to their Windows version.
Furthermore because there are multiple paths in the values separated by space
and because the paths often contain a prefix like -L (e.g. -L/f/foo) we can't
use `fix_srcfile_path` to fix this.
An alternative solution would have been to create a stub program that echos the
commandline options it receives back, and calling this program with $(CC) and
unquoted to get them translated. However this was a bit more invasive.
So instead for native compilations we add -B../../ such that it picks up the
from the previous built compiler. Since it's native there shouldn't be a
* Makefile.in (TOOLS_FLAGS_TO_PASS_NATIVE): Add -B ../../.
More information about the Gcc-bugs