Cabal-Version:  2.2
Name:           llvm-extra
Version:        0.9.1
License:        BSD-3-Clause
License-File:   LICENSE
Author:         Henning Thielemann <haskell@henning-thielemann.de>
Maintainer:     Henning Thielemann <haskell@henning-thielemann.de>
Homepage:       https://wiki.haskell.org/LLVM
Category:       Compilers/Interpreters, Code Generation
Synopsis:       Utility functions for the llvm interface
Description:
  The Low-Level Virtual-Machine is a compiler back-end with optimizer.
  You may also call it a high-level portable assembler.
  This package provides various utility functions
  for the Haskell interface to LLVM, for example:
  .
  * arithmetic operations with more general types
    but better type inference than the @llvm@ interface
    in "LLVM.Extra.Arithmetic",
  .
  * a type class for loading and storing sets of values with one command (macro)
    in "LLVM.Extra.Memory",
  .
  * support instance declarations of LLVM classes
    in "LLVM.Extra.Class",
  .
  * handling of termination by a custom monad on top of @CodeGenFunction@
    in "LLVM.Extra.MaybeContinuation"
  .
  * various kinds of loops (while) and condition structures (if-then-else)
    in "LLVM.Extra.Control"
  .
  * more functional loop construction using "LLVM.Extra.Iterator"
  .
  * complex Haskell values mapped to LLVM values in "LLVM.Extra.Multi.Value"
  .
  * advanced vector operations
    such as sum of all vector elements, cumulative sum,
    floor, non-negative fraction, absolute value
    in "LLVM.Extra.Vector"
  .
  * type classes for handling scalar and vector operations
    in a uniform way
    in "LLVM.Extra.ScalarOrVector"
Stability:      Experimental
Tested-With:    GHC==7.0.4, GHC==7.4.2, GHC==7.8.4
Tested-With:    GHC==8.4.4, GHC==8.6.5, GHC==8.8.1
Build-Type:     Simple
Extra-Source-Files:
  Makefile
  Changes.md

Flag buildExamples
  description: Build example executables
  default:     False

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

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

Library
  Build-Depends:
    private,
    llvm-tf >=9.1 && <9.2,
    tfp >=1.0 && <1.1,
    non-empty >=0.2.1 && <0.4,
    containers >=0.1 && <0.7,
    enumset >=0.0.5 && <0.1,
    storable-enum >=0.0 && <0.1,
    bool8 >=0.0 && <0.1,
    transformers >=0.1.1 && <0.6,
    tagged >=0.7 && <0.9,
    utility-ht >=0.0.11 && <0.1,
    prelude-compat >=0.0 && <0.0.1,
    base >=3 && <5

  Default-Language: Haskell98
  GHC-Options: -Wall
  Hs-source-dirs: src
  Exposed-Modules:
    LLVM.Extra.Arithmetic
    LLVM.Extra.Monad
    LLVM.Extra.Memory
    LLVM.Extra.Marshal
    LLVM.Extra.Maybe
    LLVM.Extra.MaybeContinuation
    LLVM.Extra.Either
    LLVM.Extra.Class
    LLVM.Extra.Control
    LLVM.Extra.Array
    LLVM.Extra.Scalar
    LLVM.Extra.Vector
    LLVM.Extra.ScalarOrVector
    LLVM.Extra.FastMath
    LLVM.Extra.Iterator
    LLVM.Extra.Multi.Iterator
    LLVM.Extra.Multi.Value
    LLVM.Extra.Multi.Value.Memory
    LLVM.Extra.Multi.Value.Vector
    LLVM.Extra.Multi.Vector
    LLVM.Extra.Multi.Vector.Memory
    LLVM.Extra.Multi.Vector.Instance
    LLVM.Extra.Multi.Class
  Other-Modules:
    LLVM.Extra.MaybePrivate
    LLVM.Extra.EitherPrivate
    LLVM.Extra.MemoryPrivate
    LLVM.Extra.Multi.Value.Private

Library private
  Build-Depends:
    llvm-tf,
    tfp,
    non-empty,
    utility-ht,
    base

  Default-Language: Haskell98
  GHC-Options: -Wall
  Hs-source-dirs: private
  Exposed-Modules:
    LLVM.Extra.ScalarOrVectorPrivate
    LLVM.Extra.ArithmeticPrivate

Executable tone-llvm
  If flag(buildExamples)
    Build-Depends:
      llvm-extra,
      llvm-tf,
      tfp,
      non-empty,
      containers >=0.1 && <0.7,
      transformers,
      utility-ht >=0.0.1 && <0.1,
      base >=3 && <5
  Else
    Buildable: False
  Default-Language: Haskell98
  GHC-Options: -Wall
  Main-Is: src/Array.hs

Test-Suite llvm-extra-test
  Type: exitcode-stdio-1.0
  Build-Depends:
    QuickCheck >=2.11 && <3,
    private,
    llvm-extra,
    llvm-tf,
    tfp,
    utility-ht >=0.0.1 && <0.1,
    base >=3 && <5
  Default-Language: Haskell98
  GHC-Options: -Wall
  Hs-Source-Dirs: test
  Main-Is: Main.hs
  Other-Modules:
    Test.Vector
    LLVM.Extra.VectorAlt