According to the autoconf manual, https://www.gnu.org/software/autoconf/manual/autoconf.html#Hosts-and-Cross_002dCompilation
That's the short documentation. To ease the transition between 2.13 and its successors, a more complicated scheme is implemented. Do not rely on the following, as it will be removed in the near future. If you specify --host, but not --build, when configure performs the first compiler test it tries to run an executable produced by the compiler. If the execution fails, it enters cross-compilation mode. This is fragile. My development machine is an x86_64 box running Debian GNU/Linux, with autoconf version 2.69. I also have a couple of cross compilers installed, e.g., mips-linux-gnu-gcc from the gcc-mips-linux-gnu debian package. I can cross compile for this system using, e.g., $ ~/hack/nettle/configure --host=mips-linux-gnu and this initially worked as expected. Then I wanted to be able to run the testsuite, so I installed the qemu-user package, and I can then run, e.g., $ file testsuite/aes-test testsuite/aes-test: ELF 32-bit MSB shared object, [...] $ LD_LIBRARY_PATH=.lib qemu-mips ./testsuite/aes-test and this works fine. Now, the qemu-user package hooks up to the kernel's binfmt mechanism, so that mips binaries can also be executed directly, without invoking qemu explicitly: $ LD_LIBRARY_PATH=.lib ./testsuite/aes-test All very nice, and makes it possible to run plain make check without any Makefile hacks to invoke qemu at the right place. However, this breaks autoconf's arcane cross compilation detection. After I installed qemu, .../configure --host=mips-linux-gnu thinks I'm doing a native build. Since the kernel is happy to execute binaries produced by mips-linux-gnu-gcc. In nettle, I build a programs "eccdata" used to generate lookup tables. When cross compiling, I build this program as a native program using the native compiler for the build architecture, and my configure script selects the compiler to use based in part on the value of $cross_compiling (using the macro GMP_PROG_CC_FOR_BUILD, borrowed from GNU GMP). So one side effect of $cross_compiling incorrectly being "no" here is that the eccdata program is compiled using the mips cross compiler, and then running that program will go through the qemu emulation. Which makes the total build time considerably longer. And also means that $ ./configure --host=mips-linux-gnu && make behaves very differently depending on whether or not the qemu packages are installed, which is unintuitive. Now, autoconf-2.13 is from a past millenium, and autoconf-2.50 (where the saner cross compile detection was introduced, as well as the above documentation) was released 2001, promising removal of the transition hack "in the near future". I would say that 17 years later, the near future is here. Can we please delete the fragile transitioning rules now? Best regards, /Niels PS. I am aware of the documented work-around, which is to also specify --build explicitly. -- Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677. Internet email is subject to wholesale government surveillance.