Name:          llvm-tf
Version:       3.0.3.1.7
License:       BSD3
License-File:  LICENSE
Synopsis:      Bindings to the LLVM compiler toolkit using type families.
Description:
  High-level bindings to the LLVM compiler toolkit
  using type families instead of functional dependencies.
  .
  We use the same module names as the @llvm@ package,
  which makes it harder to work with both packages from GHCi.
  You may use the @-hide-package@ option.
  We may change the module names later.
  .
  A note on versioning:
  The first two version numbers match the version of LLVM.
  In order to be able to improve the Haskell API for the same version of LLVM,
  I use the first three numbers of the Cabal package version
  as the major version in the sense of the Package Versioning Policy PVP.
  That is, a bump from 3.0.0 to 3.0.1 may contain substantial API changes,
  a bump from 3.0.0.0 to 3.0.0.1 may contain API extensions,
  and a bump from 3.0.0.0.0 to 3.0.0.0.1 may contain API-preserving bugfixes.
Author:        Henning Thielemann, Bryan O'Sullivan, Lennart Augustsson
Maintainer:    Henning Thielemann <llvm@henning-thielemann.de>
Stability:     experimental
Category:      Compilers/Interpreters, Code Generation
Tested-With:   GHC == 7.4.2
Cabal-Version: >= 1.14
Build-Type:    Simple

Extra-Source-Files:
  test/*.hs
  test/Makefile

Source-Repository head
  Type:     darcs
  Location: http://code.haskell.org/~thielema/llvm-tf/

Source-Repository this
  Tag:      3.0.3.1.7
  Type:     darcs
  Location: http://code.haskell.org/~thielema/llvm-tf/

Flag developer
  Description: developer mode - warnings let compilation fail
  Manual: True
  Default: False

Flag buildExamples
  Description: Build example executables
  Default:     False

Library
  Default-Language: Haskell98
  Build-Depends:
    llvm-ffi >= 3.0 && <3.6,
    tfp >=1.0 && <1.1,
    transformers >=0.3 && <0.6,
    process >=1.1 && <1.5,
    storable-record >=0.0.2 && <0.1,
    fixed-length >=0.2 && <0.3,
    non-empty >=0.2 && <0.4,
    utility-ht >=0.0.10 && <0.1,
    containers >=0.4 && <0.6,
    base >=3 && <5

  Hs-Source-Dirs: src
  GHC-Options: -Wall

  If flag(developer)
    GHC-Options: -Werror

  If os(darwin)
    Ld-Options: -w
    Frameworks: vecLib
    CPP-Options: -D__MACOS__

  C-Sources:
--    cbits/free.c
    cbits/malloc.c

  Exposed-Modules:
    LLVM.Core
    LLVM.ExecutionEngine
    LLVM.Util.Arithmetic
    LLVM.Util.File
    LLVM.Util.Foreign
    LLVM.Util.Loop
    LLVM.Util.Memory
    LLVM.Util.Optimize
    LLVM.Util.Proxy

  Other-Modules:
    LLVM.Core.CodeGen
    LLVM.Core.CodeGenMonad
    LLVM.Core.Data
    LLVM.Core.Instructions
    LLVM.Core.Type
    LLVM.Core.Util
    LLVM.Core.Vector
    LLVM.Core.UnaryVector
    LLVM.ExecutionEngine.Engine
    LLVM.ExecutionEngine.Target

Executable llvm-align
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Align.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-arith
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Arith.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-array
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Array.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-brainf
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/BrainF.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-call-conv
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      llvm-ffi,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/CallConv.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-dot-prod
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/DotProd.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-fibonacci
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Fibonacci.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-hello-jit
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/HelloJIT.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-list
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/List.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-struct
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Struct.hs
  C-Sources: example/structCheck.c
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-varargs
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Main-Is: example/Varargs.hs
  Default-Language: Haskell98
  GHC-Options: -Wall

Executable llvm-vector
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      base
  Else
    Buildable: False

  Hs-Source-Dirs: example
  Main-Is: Vector.hs
  Other-Modules: Convert
  Default-Language: Haskell98
  GHC-Options: -Wall