llvm-base: FFI bindings to the LLVM compiler toolkit.

[ bsd3, code-generation, compilers-interpreters, deprecated, library ] [ Propose Tags ] [ Report a vulnerability ]
Deprecated in favor of llvm-general

FFI bindings to the LLVM compiler toolkit.

We try to stay up to date with LLVM releases. The current version of this package is compatible with at least LLVM 3.2. Please understand that the package may or may not work against older LLVM releases; we don't have the time or resources to test across multiple releases.

  • New in 3.2: Builds against LLVM 3.2, new mid-level Wrapper interface and ST-based pure interface

  • New in 3.0: Builds against LLVM 3.0.

  • New in 0.9.1.1: Builds against LLVM 2.9.

  • New in 0.9.1.0: Util.Memory for memory related intrinsics.

  • New in 0.9.0.0: Adapted to LLVM 2.8 (removed support for Union types).


[Skip to Readme]

Modules

[Last Documentation]

  • LLVM
    • FFI
      • LLVM.FFI.Analysis
      • LLVM.FFI.AssemblyReader
      • LLVM.FFI.BitReader
      • LLVM.FFI.BitWriter
      • LLVM.FFI.Core
      • LLVM.FFI.ExecutionEngine
      • LLVM.FFI.Linker
      • LLVM.FFI.Support
      • LLVM.FFI.Target
      • Transforms
        • LLVM.FFI.Transforms.IPO
        • LLVM.FFI.Transforms.PassManagerBuilder
        • LLVM.FFI.Transforms.Scalar
    • LLVM.ST
    • Target
      • LLVM.Target.Native
    • Wrapper
      • LLVM.Wrapper.Analysis
      • LLVM.Wrapper.BitReader
      • LLVM.Wrapper.BitWriter
      • LLVM.Wrapper.Core
      • LLVM.Wrapper.ExecutionEngine
      • LLVM.Wrapper.Linker
      • LLVM.Wrapper.Target
      • Transforms
        • LLVM.Wrapper.Transforms.PassManagerBuilder

Flags

Automatic Flags
NameDescriptionDefault
developer

operate in developer mode

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 3.0.0.0, 3.0.1.0, 3.2.0.0, 3.2.0.1, 3.2.0.2
Dependencies base (>=3 && <5), mtl (>=2.1 && <3) [details]
Tested with ghc ==6.12.3, ghc ==7.0.3, ghc ==7.2.2
License BSD-3-Clause
Author Bryan O'Sullivan, Lennart Augustsson, Benjamin Saunders
Maintainer Bryan O'Sullivan <bos@serpentine.com>, Lennart Augustsson <lennart@augustsson.net>, Benjamin Saunders <besaunde@sfu.ca>
Category Compilers/Interpreters, Code Generation
Home page https://github.com/bos/llvm
Bug tracker https://github.com/bos/llvm/issues
Source repo head: git clone git://github.com/bos/llvm.git
head: hg clone https://bitbucket.org/bos/llvm/
Uploaded by CarterSchonwald at 2013-05-28T00:44:19Z
Distributions
Reverse Dependencies 4 direct, 63 indirect [details]
Downloads 5825 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-21 [all 9 reports]

Readme for llvm-base-3.2.0.2

[back to package description]

Haskell LLVM bindings

This package provides Haskell bindings for the popular LLVM compiler infrastructure project.

Compatibility

We try to stay up to date with LLVM releases. The current version of this package is compatible with LLVM 2.9 and 2.8. Please understand that the package may or may not work against older LLVM releases; we don't have the time or resources to test across multiple releases.

Configuration

By default, when you run cabal install, the Haskell bindings will be configured to look for LLVM in /usr/local.

If you have LLVM installed in a different location, e.g. /usr, you can tell the configure script where to find it as follows:

cabal install --configure-option=--with-llvm-prefix=/usr

Package status - what to expect

This package is still under development.

The high level bindings are currently incomplete, so there are some limits on what you can do. Adding new functions is generally easy, though, so don't be afraid to get your hands dirty.

The high level interface is mostly safe, but the type system cannot protect against everything that can go wrong, so take care. And, of course, there's no way to guarantee anything about the generated code.

GHCi

llvm-base will not work under GHCi. It fails to resolve some symbols, however under GHC it works fine. It appears related to the bugs listed in:

http://hackage.haskell.org/trac/ghc/ticket/3333 http://hackage.haskell.org/trac/ghc/ticket/3658 http://hackage.haskell.org/trac/ghc/ticket/5987

ghci versions < 7.7 have their own special linker, we do not support it. ghci versions >= 7.7 use the system dynamic linker, we do support it. If you have a problem using llvm-base with ghci >= 7.7 please file a bug report.

Staying in touch

There is a low-volume mailing list named haskell-llvm@projects.haskellorg. If you use the LLVM bindings, you should think about joining.

If you want to contribute patches, please clone a copy of the git repository:

git clone git://github.com/bos/llvm

Patches are best submitted via the github "pull request" interface.

To file a bug or a request for an enhancement, please use the github issue tracker.