L4Re, BUILD_ARCH, cross-building for ARM on MIPS

Paul Boddie paul at boddie.org.uk
Mon Jun 10 16:50:57 CEST 2019


Hello,

In attempting to investigate building L4Re/Fiasco.OC for the Raspberry Pi 
Zero, I encountered an unusual problem: unusual because, I suppose, most 
people do not try and cross-build on architectures other than x86(-64).

When performing the initial L4Re build directory initialisation step...

make B=mybuild

...BUILD_ARCH seems to be set to x86 even on other architectures. This then 
causes CCXX_FLAGS to be populated with x86-dependent settings such as -m32, 
and the gcc host compilers for MIPS raise errors upon encountering these 
unrecognised arguments.

Here is the offending command in the top-level Makefile (line 376 in my 
version, r83 in Subversion):

GENDEP_OUTPUT=$$X.out $(CC) $(CCXX_FLAGS) -c $$X -o $$X.o

Although it seemed like the config step could be performed after ignoring 
these errors, I did wonder if there might be some undesirable consequences. In 
the end, I found that the following invocation was needed:

make B=mybuild CC=gcc CXX=g++ LD=ld BUILD_ARCH=mips CPU=32r2 CPU_ABI=32

After that, things seem to work as expected. I imagine that there is a 
"chicken and egg" situation here: the appropriate settings would be obtained 
from the configuration, but the command being run sets up the configuration.

Has anyone else seen this problem before?

Paul



More information about the l4-hackers mailing list