Cross-compiling LLVM for ARM on Ubuntu

| tagged with
  • llvm
  • arm
  • 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.