packages feed

llvm-analysis-0.3.0: llvm-analysis.cabal

name: llvm-analysis
version: 0.3.0
synopsis: A Haskell library for analyzing LLVM bitcode
license: BSD3
license-file: LICENSE
author: Tristan Ravitch
maintainer: travitch@cs.wisc.edu
category: Development
build-type: Simple
cabal-version: >=1.10
stability: experimental
tested-with: GHC == 7.6.3
extra-source-files: README.md
description: A Haskell library for analyzing LLVM bitcode.  To convert
             bitcode to the format used by this library, see the
             llvm-data-interop package.
             .
             This library attempts to provide some basic program analysis
             infrastructure and aims to scale to large bitcode files.
             .
             There are some useful tools built on top of this library
             available in the llvm-tools package.
             .
             Changes since 0.2.0:

              * LLVM 3.3 support (contributed by Patrick Hulin)

              * Metadata format change.  Metadata type entries no longer have
                a MetaDWFile.  Instead, file and directory names are stored
                directly in each MetaDW*Type.  This change lets us more easily
                accommodate changes in LLVM 3.3 (while supporting older versions).

              * Under LLVM 3.3, the 'metaCompileUnitIsMain' field of MetaDWCompileUnit
                is always False.  This disappeared in LLVM 3.3, but removing it would
                be an unnecessary API break, I think.

flag DebugAndersenConstraints
  description: Enable debugging output for the points-to analysis (shows constraints)
  default: False

flag DebugAndersenGraph
  description: Enable debugging output for the points-to analysis (shows the solved constraint graph in a window)
  default: False

library
  default-language: Haskell2010
  build-depends: base == 4.*,
                 vector >= 0.9,
                 transformers >= 0.3,
                 filemanip >= 0.3.5.2,
                 monad-par >= 0.3.4.2,
                 graphviz >= 2999.12.0.3,
                 temporary >= 1.0,
                 lens > 1,
                 hashable >= 1.1.2.0,
                 failure >= 0.2,
                 lens >= 3.8,
                 GenericPretty > 1,
                 hoopl >= 3.9.0.0,
                 llvm-base-types >= 0.3.0,
                 fgl >= 5.4,
                 text >= 0.11,
                 boomerang,
                 ifscs >= 0.2.0.0 && < 0.3.0.0,
                 array, bytestring, containers, deepseq,
                 process, filepath, directory, unordered-containers,
                 -- Testing
                 HUnit, test-framework, test-framework-hunit,
                 -- Dealing with C++ names
                 itanium-abi >= 0.1.0.0 && < 0.2.0.0,
                 uniplate == 1.*
  hs-source-dirs: src
  exposed-modules: LLVM.Analysis,
                   LLVM.Analysis.AccessPath,
                   LLVM.Analysis.BlockReturnValue,
                   LLVM.Analysis.CDG,
                   LLVM.Analysis.CFG,
                   LLVM.Analysis.CFG.Internal,
                   LLVM.Analysis.CallGraph,
                   LLVM.Analysis.CallGraphSCCTraversal,
                   LLVM.Analysis.CallGraph.Internal,
                   LLVM.Analysis.ClassHierarchy,
                   LLVM.Analysis.Dataflow,
                   LLVM.Analysis.Dominance,
                   LLVM.Analysis.PointsTo,
                   LLVM.Analysis.PointsTo.AllocatorProfile,
                   LLVM.Analysis.PointsTo.Andersen,
                   LLVM.Analysis.PointsTo.TrivialFunction,
                   LLVM.Analysis.NoReturn,
                   LLVM.Analysis.NullPointers,
                   LLVM.Analysis.ScalarEffects,
                   LLVM.Analysis.UsesOf,
                   LLVM.Analysis.Util.Names,
                   LLVM.Analysis.Util.Testing

  if flag(DebugAndersenConstraints)
    cpp-options: "-DDEBUGCONSTRAINTS"
  ghc-options: -Wall -funbox-strict-fields
  ghc-prof-options: -auto-all

test-suite CallGraphTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  main-is: CallGraphTest.hs
  hs-source-dirs: tests
  build-depends: base == 4.*,
                 HUnit, filepath, containers, bytestring,
                 llvm-analysis >= 0.3.0,
                 llvm-data-interop >= 0.3.0
  ghc-options: -Wall

test-suite BlockReturnTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  main-is: BlockReturnTests.hs
  hs-source-dirs: tests
  build-depends: base == 4.*,
                 containers, HUnit, filepath,
                 llvm-analysis >= 0.3.0,
                 llvm-data-interop >= 0.3.0
  ghc-options: -Wall

test-suite ReturnTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  build-depends: base == 4.*,
                 transformers >= 0.3,
                 containers, filepath, HUnit,
                 unordered-containers,
                 llvm-data-interop >= 0.3.0,
                 llvm-analysis >= 0.3.0
  ghc-options: -Wall -rtsopts
  main-is: ReturnTests.hs
  hs-source-dirs: tests

test-suite AccessPathTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  build-depends: base == 4.*,
                 containers, filepath, HUnit,
                 llvm-data-interop >= 0.3.0,
                 llvm-analysis >= 0.3.0
  ghc-options: -Wall -rtsopts
  main-is: AccessPathTests.hs
  hs-source-dirs: tests

test-suite ClassHierarchyTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  build-depends: base == 4.*,
                 containers, filepath, HUnit, uniplate,
                 llvm-analysis >= 0.3.0,
                 llvm-data-interop >= 0.3.0,
                 itanium-abi
  ghc-options: -Wall -rtsopts
  main-is: ClassHierarchyTests.hs
  hs-source-dirs: tests

test-suite AndersenTests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  build-depends: base == 4.*,
                 containers, filepath, HUnit,
                 llvm-data-interop >= 0.3.0,
                 llvm-analysis >= 0.3.0

  if flag(DebugAndersenGraph)
    build-depends: graphviz
    cpp-options: "-DDEBUGGRAPH"
  ghc-options: -Wall
  main-is: AndersenTest.hs
  hs-source-dirs: tests