Name:          llvm-tf
Version:       3.1.2
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 versions of this package are loosely based on the LLVM version.
  However, we depend on a relatively stable part of LLVM
  and provide a relatively stable API for it.
  We conform to the Package Versioning Policy PVP,
  i.e. we increase the version of this package when its API changes,
  but not necessarily when we add support for a new LLVM version.
  We support all those LLVM versions
  that are supported by our @llvm-ffi@ dependency.
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
  Changes.md

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

Source-Repository this
  Tag:      3.1.2
  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.8.1 && <3.9,
    tfp >=1.0 && <1.1,
    transformers >=0.3 && <0.6,
    storable-record >=0.0.2 && <0.1,
    enumset >=0.0.5 && <0.1,
    fixed-length >=0.2 && <0.3,
    non-empty >=0.2 && <0.4,
    semigroups >=0.1 && <1.0,
    utility-ht >=0.0.10 && <0.1,
    containers >=0.4 && <0.7,
    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-intrinsic
  If flag(buildExamples)
    Build-Depends:
      llvm-tf,
      tfp,
      non-empty,
      base
  Else
    Buildable: False

  Main-Is: example/Intrinsic.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,
      transformers,
      base
  Else
    Buildable: False

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