Cabal-version: 2.2
Name:          crucible-llvm
Version:       0.7.1
x-revision: 1
Author:        Galois Inc.
Copyright:     (c) Galois, Inc 2014-2022
Maintainer:    rscott@galois.com, kquick@galois.com, langston@galois.com
License:       BSD-3-Clause
License-file:  LICENSE
Build-type:    Simple
Category:      Language
Synopsis:      Support for translating and executing LLVM code in Crucible
Description:
   Library providing LLVM-specific extensions to the crucible core library
   for Crucible-based simulation and verification of LLVM-compiled applications.
extra-doc-files: CHANGELOG.md, README.md

source-repository head
  type:     git
  location: https://github.com/GaloisInc/crucible
  subdir:   crucible-llvm

common bldflags
  ghc-options: -Wall
               -Werror=incomplete-patterns
               -Werror=missing-methods
               -Werror=overlapping-patterns
               -Wpartial-fields
               -Wincomplete-uni-patterns
  ghc-prof-options: -O2 -fprof-auto-exported
  default-language: Haskell2010


library
  import: bldflags
  build-depends:
    base >= 4.13 && < 4.20,
    attoparsec,
    bv-sized >= 1.0.0,
    bytestring,
    containers >= 0.5.8.0,
    crucible >= 0.5,
    crucible-symio,
    what4 >= 0.5,
    extra,
    lens,
    itanium-abi >= 0.1.1.1 && < 0.2,
    llvm-pretty >= 0.12.1 && < 0.14,
    mtl,
    parameterized-utils >= 2.1.5 && < 2.2,
    pretty,
    prettyprinter >= 1.7.0,
    text,
    template-haskell,
    transformers,
    utf8-string,
    vector

  hs-source-dirs: src

  exposed-modules:
    Lang.Crucible.LLVM
    Lang.Crucible.LLVM.Arch.Util
    Lang.Crucible.LLVM.Arch.X86
    Lang.Crucible.LLVM.ArraySizeProfile
    Lang.Crucible.LLVM.Bytes
    Lang.Crucible.LLVM.Ctors
    Lang.Crucible.LLVM.DataLayout
    Lang.Crucible.LLVM.Errors
    Lang.Crucible.LLVM.Errors.MemoryError
    Lang.Crucible.LLVM.Errors.Poison
    Lang.Crucible.LLVM.Errors.UndefinedBehavior
    Lang.Crucible.LLVM.Eval
    Lang.Crucible.LLVM.Extension
    Lang.Crucible.LLVM.Functions
    Lang.Crucible.LLVM.Globals
    Lang.Crucible.LLVM.Intrinsics
    Lang.Crucible.LLVM.Intrinsics.Cast
    Lang.Crucible.LLVM.Intrinsics.Libc
    Lang.Crucible.LLVM.Intrinsics.LLVM
    Lang.Crucible.LLVM.MalformedLLVMModule
    Lang.Crucible.LLVM.MemModel
    Lang.Crucible.LLVM.MemModel.CallStack
    Lang.Crucible.LLVM.MemModel.CallStack.Internal
    Lang.Crucible.LLVM.MemModel.Generic
    Lang.Crucible.LLVM.MemModel.MemLog
    Lang.Crucible.LLVM.MemModel.Partial
    Lang.Crucible.LLVM.MemModel.Pointer
    Lang.Crucible.LLVM.MemType
    Lang.Crucible.LLVM.PrettyPrint
    Lang.Crucible.LLVM.Printf
    Lang.Crucible.LLVM.QQ
    Lang.Crucible.LLVM.SymIO
    Lang.Crucible.LLVM.SimpleLoopFixpoint
    Lang.Crucible.LLVM.SimpleLoopFixpointCHC
    Lang.Crucible.LLVM.SimpleLoopInvariant
    Lang.Crucible.LLVM.Translation
    Lang.Crucible.LLVM.Translation.Aliases
    Lang.Crucible.LLVM.TypeContext

  other-modules:
    Lang.Crucible.LLVM.Errors.Standards
    Lang.Crucible.LLVM.Extension.Arch
    Lang.Crucible.LLVM.Extension.Syntax
    Lang.Crucible.LLVM.Intrinsics.Common
    Lang.Crucible.LLVM.Intrinsics.Libcxx
    Lang.Crucible.LLVM.Intrinsics.Match
    Lang.Crucible.LLVM.Intrinsics.Options
    Lang.Crucible.LLVM.MemModel.Common
    Lang.Crucible.LLVM.MemModel.Options
    Lang.Crucible.LLVM.MemModel.Type
    Lang.Crucible.LLVM.MemModel.Value
    Lang.Crucible.LLVM.Translation.BlockInfo
    Lang.Crucible.LLVM.Translation.Constant
    Lang.Crucible.LLVM.Translation.Expr
    Lang.Crucible.LLVM.Translation.Instruction
    Lang.Crucible.LLVM.Translation.Monad
    Lang.Crucible.LLVM.Translation.Options
    Lang.Crucible.LLVM.Translation.Types
    Lang.Crucible.LLVM.Types
    Lang.Crucible.LLVM.Utils

  default-extensions: NoStarIsType


test-suite crucible-llvm-tests
  import: bldflags
  type: exitcode-stdio-1.0
  main-is: Tests.hs
  hs-source-dirs: test
  other-modules: MemSetup
               , TestFunctions
               , TestGlobals
               , TestMemory
               , TestTranslation
  build-depends:
    base,
    bv-sized,
    containers,
    crucible,
    crucible-llvm,
    directory,
    filepath,
    lens,
    llvm-pretty,
    llvm-pretty-bc-parser,
    lens,
    parameterized-utils,
    process,
    what4,
    tasty,
    tasty-quickcheck,
    tasty-hunit,
    tasty-sugar >= 2.0 && < 2.3,
    vector