RFC: Support both Cross and Native compiler from configure
Sun Jun 23 15:20:00 GMT 2019
On Sun, Jun 23, 2019 at 01:32:12PM +0000, Tamar Christina wrote:
> For AArch64 we'd like to move the generation of some of our generated files from being a part of maintainer mode to just being an artefact of the normal build.
So you want to build things for the build arch as well?
The GNU system has "build", "host" and "target" architectures, and the
toplevel coordinates between them. If you need to compile a program that
should run during the build process, the toplevel creates a directory and
.../tool/configure --build=$build --host=$build --target=$target
so the tool is built with the native compiler ($host == $build).
The programs that are part of the toolchain are configured normally, using
.../tool/configure --build=$build --host=$host --target=$target
If $build == $host on the toplevel, then both of these configurations are
identical, so the directory is shared.
The build system type (--build) is largely informational in autoconf, it is
used in a check to determine if we are cross-compiling, but looking for a
native compiler inside a configure script that also configures for cross
compiling is not going to work, because there is only a single namespace.
GCC has lots of example code for this -- the DFA generator tool AFAIK uses
libiberty, so it is built for the build system, and then again for the host
system when building the cross compiler. Your problem is likely to be a
simpler variant of what they do to build libgcc for the target when build
and host system are different.
More information about the Binutils