Table of Contents

Shortnote

The LLVM Compiler has the ability to optimize code and is preferable for intensive computational tasks. We have used LLVM in order to compile OpenSim.

Setup

Compiling mono's version of llvm:

git clone -b mono git://github.com/mono/llvm.git
cd llvm
git branch mono-2-11
git checkout mono-2-11
./configure --prefix=/opt/mono-2.11 --enable-optimized --enable-targets="x86 x86_64"
make
make install

Getting mono:

git clone git://github.com/mono/mono
cd mono
git branch mono-2-11
git checkout mono
cd mono
PATH="/opt/mono-2.11/bin:$PATH"
./configure --prefix=/opt/mono-2.11 --enable-llvm=yes
make
make install

Which installs a separate mono build in /opt/mono2.11.

Flag Differences

It is important to note that the compilers mcs, gmcs, dmcs etc… Support the /sdk:VERSION flag which cannot be found in earlier mono versions. One has to make sure that the compilers are used from /opt/mono-2.11 instead of the mono version that may be installed on the system.

In order to do that, one should change the path such that:

PATH="/opt/mono-2.11/bin:$PATH"

it includes the path to the llvm-compiled mono before the system binaries.