packages feed

llvm-party-12.1.0: llvm-party.cabal

cabal-version:      2.2
name:               llvm-party
version:            12.1.0
license:            BSD-3-Clause
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/jappeace/llvm-party/
bug-reports:        http://github.com/jappeace/llvm-party/issues
build-type:         Custom
stability:          experimental
category:           Compilers/Interpreters, Code Generation
synopsis:           General purpose LLVM bindings
description:
  llvm-party is a set of Haskell bindings for LLVM <http://llvm.org/>. Unlike other current Haskell bindings,
  it uses an ADT to represent LLVM IR (<http://llvm.org/docs/LangRef.html>), and so offers two advantages: it
  handles almost all of the stateful complexities of using the LLVM API to build IR; and it supports moving IR not
  only from Haskell into LLVM C++ objects, but the other direction - from LLVM C++ into Haskell.
  This is a fork of llvm-hs, with a major advantage that it's being maintained, for now.

extra-source-files:
  src/LLVM/Internal/FFI/Analysis.h
  src/LLVM/Internal/FFI/Attribute.h
  src/LLVM/Internal/FFI/AttributeC.hpp
  src/LLVM/Internal/FFI/CallingConvention.h
  src/LLVM/Internal/FFI/Constant.h
  src/LLVM/Internal/FFI/ErrorHandling.hpp
  src/LLVM/Internal/FFI/GlobalValue.h
  src/LLVM/Internal/FFI/InlineAssembly.h
  src/LLVM/Internal/FFI/Instruction.h
  src/LLVM/Internal/FFI/LibFunc.h
  src/LLVM/Internal/FFI/Metadata.h
  src/LLVM/Internal/FFI/OrcJIT.h
  src/LLVM/Internal/FFI/SMDiagnostic.h
  src/LLVM/Internal/FFI/Target.h
  src/LLVM/Internal/FFI/Target.hpp
  src/LLVM/Internal/FFI/Type.h
  src/LLVM/Internal/FFI/Value.h
  test/debug_metadata_1.ll
  test/debug_metadata_2.ll
  test/debug_metadata_3.ll
  test/debug_metadata_4.ll
  test/debug_metadata_5.ll
  test/main_return_38.c
  README.md
  LICENSE
  CHANGELOG.md

tested-with:        GHC ==8.8.1
extra-source-files: CHANGELOG.md

source-repository head
  type:     git
  location: git://github.com/jappeace/llvm-party.git
  branch:   llvm-12

flag shared-llvm
  description: link against llvm shared rather than static library
  default:     True

flag llvm-with-rtti
  description:
    assume llvm was built with LLVM_ENABLE_RTTI=ON (default is OFF)

  default:     False

flag debug
  description:
    compile C(++) shims with debug info for ease of troubleshooting

  default:     False

custom-setup
  setup-depends:
    , base        <5
    , Cabal       <3.10.1.0
    , containers

library
  default-language:   Haskell2010
  hs-source-dirs:     src
  build-tool-depends: hsc2hs:hsc2hs
  ghc-options:
    -O2 -Wall -fno-warn-name-shadowing -fno-warn-orphans -optcxx=-O3
    -optcxx=-Wall -optcxx=-std=c++14 -optcxx=-lstdc++

  cxx-options:        -O3 -Wall -std=c++14

  if flag(llvm-with-rtti)
    cxx-options: -frtti
    ghc-options: -optcxx=-frtti

  else
    cxx-options: -fno-rtti
    ghc-options: -optcxx=-fno-rtti

  if flag(debug)
    cxx-options: -g
    ghc-options: -optcxx=-g

  extra-libraries:    stdc++
  build-depends:
    , array                 >=0.4.0.0 && <0.6
    , attoparsec            >=0.13    && <0.15
    , base                  >=4.9     && <5
    , bytestring            >=0.10    && <0.12
    , containers            >=0.4.2.1 && <0.7
    , exceptions            >=0.8     && <0.11
    , fail                  <4.10
    , mtl                   >=2.1.3   && <2.3
    , template-haskell      >=2.5.0.0 && <2.20
    , transformers          >=0.3     && <0.6
    , unordered-containers  >=0.2     && <0.3
    , utf8-string           >=0.3.7   && <1.1

  default-extensions:
    NoImplicitPrelude
    ConstraintKinds
    DeriveDataTypeable
    DeriveGeneric
    EmptyDataDecls
    FlexibleContexts
    FlexibleInstances
    StandaloneDeriving
    TupleSections

  exposed-modules:
    LLVM
    LLVM.Analysis
    LLVM.AST
    LLVM.AST.AddrSpace
    LLVM.AST.Attribute
    LLVM.AST.CallingConvention
    LLVM.AST.COMDAT
    LLVM.AST.Constant
    LLVM.AST.DataLayout
    LLVM.AST.DLL
    LLVM.AST.Float
    LLVM.AST.FloatingPointPredicate
    LLVM.AST.FunctionAttribute
    LLVM.AST.Global
    LLVM.AST.InlineAssembly
    LLVM.AST.Instruction
    LLVM.AST.IntegerPredicate
    LLVM.AST.Linkage
    LLVM.AST.Name
    LLVM.AST.Operand
    LLVM.AST.ParameterAttribute
    LLVM.AST.RMWOperation
    LLVM.AST.ThreadLocalStorage
    LLVM.AST.Type
    LLVM.AST.Typed
    LLVM.AST.Visibility
    LLVM.CodeGenOpt
    LLVM.CodeModel
    LLVM.CommandLine
    LLVM.Context
    LLVM.DataLayout
    LLVM.Diagnostic
    LLVM.Exception
    LLVM.ExecutionEngine
    LLVM.Internal.Analysis
    LLVM.Internal.Atomicity
    LLVM.Internal.Attribute
    LLVM.Internal.BasicBlock
    LLVM.Internal.CallingConvention
    LLVM.Internal.Coding
    LLVM.Internal.CommandLine
    LLVM.Internal.Constant
    LLVM.Internal.Context
    LLVM.Internal.DataLayout
    LLVM.Internal.DecodeAST
    LLVM.Internal.Diagnostic
    LLVM.Internal.EncodeAST
    LLVM.Internal.ExecutionEngine
    LLVM.Internal.FastMathFlags
    LLVM.Internal.FFI.Analysis
    LLVM.Internal.FFI.Assembly
    LLVM.Internal.FFI.Attribute
    LLVM.Internal.FFI.BasicBlock
    LLVM.Internal.FFI.BinaryOperator
    LLVM.Internal.FFI.Bitcode
    LLVM.Internal.FFI.Builder
    LLVM.Internal.FFI.ByteRangeCallback
    LLVM.Internal.FFI.Cleanup
    LLVM.Internal.FFI.CommandLine
    LLVM.Internal.FFI.Constant
    LLVM.Internal.FFI.Context
    LLVM.Internal.FFI.DataLayout
    LLVM.Internal.FFI.DynamicLibrary
    LLVM.Internal.FFI.ExecutionEngine
    LLVM.Internal.FFI.Function
    LLVM.Internal.FFI.GlobalAlias
    LLVM.Internal.FFI.GlobalValue
    LLVM.Internal.FFI.GlobalVariable
    LLVM.Internal.FFI.InlineAssembly
    LLVM.Internal.FFI.Instruction
    LLVM.Internal.FFI.InstructionDefs
    LLVM.Internal.FFI.Iterate
    LLVM.Internal.FFI.LLVMCTypes
    LLVM.Internal.FFI.MemoryBuffer
    LLVM.Internal.FFI.Metadata
    LLVM.Internal.FFI.Module
    LLVM.Internal.FFI.ObjectFile
    LLVM.Internal.FFI.OrcJIT
    LLVM.Internal.FFI.PassManager
    LLVM.Internal.FFI.PtrHierarchy
    LLVM.Internal.FFI.RawOStream
    LLVM.Internal.FFI.RTDyldMemoryManager
    LLVM.Internal.FFI.ShortByteString
    LLVM.Internal.FFI.SMDiagnostic
    LLVM.Internal.FFI.Target
    LLVM.Internal.FFI.Threading
    LLVM.Internal.FFI.Transforms
    LLVM.Internal.FFI.Type
    LLVM.Internal.FFI.User
    LLVM.Internal.FFI.Value
    LLVM.Internal.FloatingPointPredicate
    LLVM.Internal.Function
    LLVM.Internal.Global
    LLVM.Internal.InlineAssembly
    LLVM.Internal.Instruction
    LLVM.Internal.InstructionDefs
    LLVM.Internal.IntegerPredicate
    LLVM.Internal.LibraryFunction
    LLVM.Internal.Linking
    LLVM.Internal.MemoryBuffer
    LLVM.Internal.Metadata
    LLVM.Internal.Module
    LLVM.Internal.ObjectFile
    LLVM.Internal.Operand
    LLVM.Internal.OrcJIT
    LLVM.Internal.PassManager
    LLVM.Internal.RawOStream
    LLVM.Internal.RMWOperation
    LLVM.Internal.String
    LLVM.Internal.TailCallKind
    LLVM.Internal.Target
    LLVM.Internal.Threading
    LLVM.Internal.Type
    LLVM.Internal.Value
    LLVM.IRBuilder
    LLVM.IRBuilder.Constant
    LLVM.IRBuilder.Instruction
    LLVM.IRBuilder.Internal.SnocList
    LLVM.IRBuilder.Module
    LLVM.IRBuilder.Monad
    LLVM.Linking
    LLVM.Module
    LLVM.OrcJIT
    LLVM.PassManager
    LLVM.Prelude
    LLVM.Relocation
    LLVM.Target
    LLVM.Target.LibraryFunction
    LLVM.Target.Options
    LLVM.Threading
    LLVM.Transforms
    LLVM.Triple

  other-modules:
    Control.Monad.AnyCont
    Control.Monad.AnyCont.Class
    Control.Monad.Trans.AnyCont

  include-dirs:       src
  cxx-sources:
    src/LLVM/Internal/FFI/AssemblyC.cpp
    src/LLVM/Internal/FFI/AttributeC.cpp
    src/LLVM/Internal/FFI/BitcodeC.cpp
    src/LLVM/Internal/FFI/BuilderC.cpp
    src/LLVM/Internal/FFI/CallingConventionC.cpp
    src/LLVM/Internal/FFI/CommandLineC.cpp
    src/LLVM/Internal/FFI/ConstantC.cpp
    src/LLVM/Internal/FFI/ErrorHandling.cpp
    src/LLVM/Internal/FFI/ExecutionEngineC.cpp
    src/LLVM/Internal/FFI/FunctionC.cpp
    src/LLVM/Internal/FFI/GlobalAliasC.cpp
    src/LLVM/Internal/FFI/GlobalValueC.cpp
    src/LLVM/Internal/FFI/InlineAssemblyC.cpp
    src/LLVM/Internal/FFI/InstructionC.cpp
    src/LLVM/Internal/FFI/MetadataC.cpp
    src/LLVM/Internal/FFI/ModuleC.cpp
    src/LLVM/Internal/FFI/OrcJITC.cpp
    src/LLVM/Internal/FFI/PassManagerC.cpp
    src/LLVM/Internal/FFI/RawOStreamC.cpp
    src/LLVM/Internal/FFI/RTDyldMemoryManager.cpp
    src/LLVM/Internal/FFI/SMDiagnosticC.cpp
    src/LLVM/Internal/FFI/TargetC.cpp
    src/LLVM/Internal/FFI/TypeC.cpp
    src/LLVM/Internal/FFI/ValueC.cpp

test-suite test
  default-language:   Haskell2010
  type:               exitcode-stdio-1.0
  build-depends:
    , base              >=4.9     && <5
    , bytestring        >=0.10
    , containers        >=0.4.2.1
    , llvm-party
    , mtl               >=2.1
    , pretty-show       >=1.6
    , process
    , QuickCheck        >=2.5.1.1
    , tasty             >=0.11
    , tasty-hunit       >=0.9
    , tasty-quickcheck  >=0.8
    , temporary         >=1.2
    , transformers      >=0.3.0.0

  hs-source-dirs:     test
  default-extensions:
    FlexibleContexts
    FlexibleInstances
    TupleSections

  main-is:            Test.hs
  other-modules:
    LLVM.Test.Analysis
    LLVM.Test.Attribute
    LLVM.Test.CallingConvention
    LLVM.Test.Constants
    LLVM.Test.DataLayout
    LLVM.Test.ExecutionEngine
    LLVM.Test.FunctionAttribute
    LLVM.Test.Global
    LLVM.Test.InlineAssembly
    LLVM.Test.Instructions
    LLVM.Test.Instrumentation
    LLVM.Test.Linking
    LLVM.Test.Metadata
    LLVM.Test.Module
    LLVM.Test.ObjectCode
    LLVM.Test.Optimization
    LLVM.Test.OrcJIT
    LLVM.Test.ParameterAttribute
    LLVM.Test.Regression
    LLVM.Test.Support
    LLVM.Test.Target
    LLVM.Test.Tests
    LLVM.Test.IRBuilder