Cross-compiling LLVM for ARM on Ubuntu
In my efforts to get the GHC compiler set running registerised on ARM, I found that I spent a large amount of time waiting for LLVM builds. To avoid this, I tried cross-compiling LLVM for my ARM target on my x86_64
laptop.
Since we are cross-compiling, we will obviously need a cross-compiler on the build machine (assuming Ubuntu),
$ sudo apt-get install gcc-arm-linux-gnueabi
Grab an LLVM tree,
$ git clone http://llvm.org/git/llvm.git
$ cd llvm
If you want clang, clone it in tools/
,
$ cd tools
$ git clone http://llvm.org/git/clang.git
$ cd ..
At the time of writing, there was an issue with the LLVM build system which precludes running configure
from the root of the source tree. For this reason, we build within a build directory,
$ mkdir build
$ cd build
$ ../configure --prefix=/mnt/data/ghc/usr --host=arm-linux-gnueabi --target=arm-linux-gnueabi
Building,
$ make
And now we wait; go for a walk, water your cat, do some laundry, get several cups of coffee; whatever it is you’d spend an afternoon doing. Sadly even on a 2.2GHz Core 2, LLVM still takes several hours to build.