llvm-fs: An F# binding for LLVM
llvm-fs can be used to write your LLVM compiler in a .NET language. The code is all F# but an effort has been made to make the library easy to use from C#. See test/CSSimpleTest.cs for an example of how you can call the llvm-fs functions from C#. If you have questions or comments about llvm-fs you can use the project google group: http://groups.google.com/group/llvm-fs
Building LLVM for llvm-fs
NOTE: this has been tested on both OS X 10.5 and on Windows 7 (using MinGW bash/gcc/g++ with python 2.7 installed)
Download a copy of the LLVM 3.0 source code. In order to use the LLVM native
libraries with llvm-fs they must be built with
Unfortunately the prebuilt LLVM binaries don't come with shared libraries so you
will have to build LLVM yourself. You can do this by using a build command like:
./configure --enable-shared --enable-jit && make && make install
Building the llvm-fs Assembly
OS X/mono: On OS X run the
./build.bash script to generate the LLVMFsharp.dll
assembly. This should also work on Linux but is untested (Please let me know if
it works on Linux for you).
Windows 7: open the llvm-fs.fsproj project file and build the project. This will generate the LLVMFsharp.dll assembly for you.
Using llvm-fs in your project
In order to use llvm-fs you will want to consult the following:
- Example F# and C# code under the ./test directory. If you are using mono you
can see how these tests are built and run by un-commenting everything under
# uncomment the following to build and run the testsin the build.bash file.
- The LLVM C documentation. Almost all of the llvm-fs binding functions are auto-generated from the C header files so these docs are very useful.
- The fsi file for llvm-fs
Regenerating bindings should not be necessary unless you're building bindings to
a new version of LLVM. If you want to do this start with the
script and ask questions on the project list if you have problems.