name: llvm-hs-pure
version: 6.0.0
license: BSD3
license-file: LICENSE
author: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>, Benjamin S. Scarlet
maintainer: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
copyright: (c) 2013 Benjamin S. Scarlet and Google Inc.
homepage: http://github.com/llvm-hs/llvm-hs/
bug-reports: http://github.com/llvm-hs/llvm-hs/issues
build-type: Simple
stability: experimental
cabal-version: >= 1.8
category: Compilers/Interpreters, Code Generation
synopsis: Pure Haskell LLVM functionality (no FFI).
description:
  llvm-hs-pure is a set of pure Haskell types and functions for interacting with LLVM <http://llvm.org/>.
  It includes an ADT to represent LLVM IR (<http://llvm.org/docs/LangRef.html>). The llvm-hs package
  builds on this one with FFI bindings to LLVM, but llvm-hs-pure does not require LLVM to be available.
tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
extra-source-files: CHANGELOG.md

source-repository head
  type: git
  location: git://github.com/llvm-hs/llvm-hs.git
  branch: llvm-5

flag semigroups
  description: Add semigroups to build-depends for Data.List.NonEmpty. This will be selected automatically by cabal.
  default: False

library
  ghc-options: -Wall
  if flag(semigroups)
    build-depends:
      base >= 4.8 && < 4.9,
      semigroups >= 0.18 && < 0.19
  else
    build-depends:
      base >= 4.9 && < 5
  build-depends:
    attoparsec >= 0.13,
    bytestring >= 0.10 && < 0.11,
    fail,
    transformers >= 0.3 && < 0.6,
    mtl >= 2.1,
    template-haskell >= 2.5.0.0,
    containers >= 0.4.2.1,
    unordered-containers >= 0.2
  hs-source-dirs: src
  extensions:
    NoImplicitPrelude
    TupleSections
    DeriveDataTypeable
    DeriveGeneric
    EmptyDataDecls
    FlexibleContexts
    FlexibleInstances
    StandaloneDeriving
    ConstraintKinds
  exposed-modules:
    LLVM.AST
    LLVM.AST.AddrSpace
    LLVM.AST.InlineAssembly
    LLVM.AST.Attribute
    LLVM.AST.ParameterAttribute
    LLVM.AST.FunctionAttribute
    LLVM.AST.CallingConvention
    LLVM.AST.Constant
    LLVM.AST.DataLayout
    LLVM.AST.Float
    LLVM.AST.FloatingPointPredicate
    LLVM.AST.Global
    LLVM.AST.Instruction
    LLVM.AST.IntegerPredicate
    LLVM.AST.Linkage
    LLVM.AST.Name
    LLVM.AST.Operand
    LLVM.AST.RMWOperation
    LLVM.AST.ThreadLocalStorage
    LLVM.AST.Type
    LLVM.AST.Typed
    LLVM.AST.Visibility
    LLVM.AST.DLL
    LLVM.AST.COMDAT
    LLVM.DataLayout
    LLVM.IRBuilder
    LLVM.IRBuilder.Constant
    LLVM.IRBuilder.Instruction
    LLVM.IRBuilder.Internal.SnocList
    LLVM.IRBuilder.Module
    LLVM.IRBuilder.Monad
    LLVM.Prelude

test-suite test
  type: exitcode-stdio-1.0
  if flag(semigroups)
    build-depends:
      base >= 4.8 && < 4.9,
      semigroups >= 0.18 && < 0.19
  else
    build-depends:
      base >= 4.9 && < 5
  build-depends:
    tasty >= 0.11,
    tasty-hunit >= 0.9,
    tasty-quickcheck >= 0.8,
    llvm-hs-pure,
    transformers >= 0.3,
    containers >= 0.4.2.1,
    mtl >= 2.1
  hs-source-dirs: test
  extensions:
    TupleSections
    FlexibleInstances
    FlexibleContexts
  main-is: Test.hs
  other-modules:
    LLVM.Test.DataLayout
    LLVM.Test.Tests

test-suite test-irbuilder
  type: exitcode-stdio-1.0
  main-is: IRBuilder.hs
  hs-source-dirs:
      test
  build-depends:
      base >=4.8 && <4.11
    , bytestring
    , containers
    , hspec
    , llvm-hs-pure
    , mtl
    , text
    , transformers
    , unordered-containers