As more multiarch support makes its way into the system, I gave a try to cross-building mesa with only the armel cross-compiler packages and multiarch-installable headers/libraries. This works ok until the build tries to find X headers, because /usr/include is not on the default path:
make: Entering directory `/home/vorlon/devel/linaro/multiarch/mesa/git/build/swx11+glu/src/mesa/drivers/x11'
arm-linux-gnueabi-gcc -c -I../../../../include -I../../../../src/mapi -I../../../../src/mesa -I../../../../src/mesa/main -Wall -g -O2 -Wall -Wmissing-prototypes -std=c99 -ffast-math -fvisibility=hidden -fno-strict-aliasing -fPIC -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XSHM fakeglx.c -o fakeglx.o
In file included from fakeglx.c:44:0:
glxheader.h:36:23: fatal error: X11/Xlib.h: No such file or directory
make: *** [fakeglx.o] Error 1
In the multiarch world, it's assumed that since not all headers are architecture-dependent, not all of them will have to be moved to the per-architecture path /usr/include/<triplet>. That means cross-compilers will also need to look in /usr/include, not just in /usr/<arch>/include and /usr/include/<arch>.
Actually, it's possible that this compiler isn't currently multiarch-enabled at all?
$ arm-linux-gnueabi-gcc -print-search-dirs|sed -n -e's/libraries: =//p' | sed -e's/:/\n/g' | xargs -n1 readlink -f
No mention of /usr/lib/arm-linux-gnueabi here yet.
DistroRelease: Ubuntu 11.04
Package: gcc-arm-linux-gnueabi 4:4.5.2-8
ProcVersionSignature: Ubuntu 2.6.38-7.39-generic 2.6.38
Uname: Linux 2.6.38-7-generic x86_64
Date: Mon Jun 20 15:33:59 2011
InstallationMedia: Ubuntu 10.04.1 LTS "Lucid Lynx" - Release amd64 (20100816.1)
UpgradeStatus: Upgraded to natty on 2011-03-24 (88 days ago)