packages feed

datafix-0.0.0.2: datafix.cabal

name:                datafix
version:             0.0.0.2
synopsis:            Fixing data-flow problems
description:         Fixing data-flow problems in expression trees.
                     This should be useful if you want to write optimizations
                     for your favorite programming language.

                     See the Tutorial module for an introduction. After that,
                     you might want to take a look at the `examples/` folder
                     in the [repository](https://github.com/sgraf812/datafix/tree/master/examples).

license:             ISC
license-file:        LICENSE
author:              Sebastian Graf
maintainer:          sgraf1337@gmail.com
copyright:           © 2018 Sebastian Graf
homepage:            https://github.com/sgraf812/datafix
bug-reports:         https://github.com/sgraf812/datafix/issues

category:            Compiler
build-type:          Custom
stability:           alpha (experimental)
cabal-version:       1.24

extra-source-files:
  CHANGELOG.md
  README.md
  stack.yaml
  exprs/const.hs
  exprs/findLT.hs
  exprs/kahan.hs
  exprs/lambda.hs
  exprs/sieve.hs

source-repository head
  type:     git
  location: https://github.com/sgraf812/datafix

flag no-lattices
  description: Don't depend on the lattices package.
  default: False

custom-setup
  setup-depends:
      base
    , Cabal
    -- let cabal-toolkit choose the right Cabal and base versions
    , cabal-toolkit >= 0.0.4

library
  default-language:  Haskell2010
  ghc-options:       -Wall
  hs-source-dirs:    src
  exposed-modules:   Datafix
                     Datafix.Common
                     Datafix.Denotational
                     Datafix.Explicit
                     Datafix.MonoMap
                     Datafix.NodeAllocator
                     Datafix.ProblemBuilder
                     Datafix.Tutorial
                     Datafix.Utils.Constraints
                     Datafix.Utils.TypeLevel
                     Datafix.Worklist
                     Datafix.Worklist.Denotational
                     Datafix.Worklist.Graph
                     Datafix.Worklist.Graph.Dense
                     Datafix.Worklist.Graph.Sparse
                     Datafix.Worklist.Internal
  other-modules:
                     Datafix.Entailments
                     Datafix.Utils.GrowableVector
                     Datafix.IntArgsMonoMap
                     Datafix.IntArgsMonoSet
  build-depends:     base >= 4.8 && < 5
                   , containers >= 0.5 && < 0.6
                   , transformers < 0.6
                   -- Just Data.Vector.Mutable, which has been there for ages
                   , vector < 0.13
                   -- Data.Primitive.Array.sizeofArray was introduced in 0.6.2.0
                   , primitive >= 0.6.2.0 && < 0.7
                   -- has not reached the first major version, so quite unstable
                   , pomaps >= 0.0.0.2 && < 0.0.1.0
  if !flag(no-lattices)
    build-depends:   lattices < 2
  if flag(no-lattices)
    hs-source-dirs:  lattices
    exposed-modules: Algebra.Lattice

test-suite tests
  type:              exitcode-stdio-1.0
  default-language:  Haskell2010
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:    tests examples
  main-is:           Main.hs
  other-modules:     Analyses.AdHocStrAnal
                     Analyses.StrAnal
                     Analyses.StrAnal.Analysis
                     Analyses.StrAnal.Arity
                     Analyses.StrAnal.Strictness
                     Analyses.Syntax.CoreSynF
                     Analyses.Syntax.MkCoreHelpers
                     Analyses.Syntax.MkCoreFromFile
                     Analyses.Templates.LetDn
                     Fib
                     Fac
                     Mutual
                     Critical
                     Trivial
                     StrAnal
  build-depends:     base >= 4.8 && < 5
                   -- let cabal-toolkit choose the Cabal version
                   , Cabal
                   , cabal-toolkit == 0.0.4
                   , tasty >= 0.11
                   , tasty-hunit >= 0.9
                   , tasty-smallcheck >= 0.8
                   , containers
                   , primitive
                   , transformers < 0.6
                   , datafix
                   , ghc
                   , ghc-paths
                   , directory
                   , filepath
                   , turtle
                   , text
  if !flag(no-lattices)
    build-depends:   lattices < 2
  if flag(no-lattices)
    build-depends:   pomaps >= 0.0.0.2 && < 0.0.1.0

test-suite doctests
  type:              exitcode-stdio-1.0
  default-language:  Haskell2010
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:    tests
  main-is:           doctest.hs
  build-depends:     base >= 4.8 && < 5
                   , doctest >=0.10
                   , Glob >= 0.7
                   , QuickCheck >= 2.5
                   , datafix

benchmark benchmarks
  type:              exitcode-stdio-1.0
  default-language:  Haskell2010
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:    bench examples
  main-is:           Main.hs
  other-modules:     Sum
                     Analyses.AdHocStrAnal
                     Analyses.StrAnal
                     Analyses.StrAnal.Analysis
                     Analyses.StrAnal.Arity
                     Analyses.StrAnal.Strictness
                     Analyses.Syntax.CoreSynF
                     Analyses.Syntax.MkCoreHelpers
                     Analyses.Syntax.MkCoreFromFile
                     Analyses.Templates.LetDn
  build-depends:     base >= 4.8 && < 5
                   -- let cabal-toolkit choose the Cabal version
                   , Cabal
                   , cabal-toolkit == 0.0.4
                   , criterion >= 1.1
                   , deepseq
                   , containers
                   , primitive
                   , transformers < 0.6
                   , datafix                   
                   , ghc
                   , ghc-paths
                   , directory
                   , filepath
                   , turtle
                   , text
  if !flag(no-lattices)
    build-depends:   lattices < 2
  if flag(no-lattices)
    build-depends:   pomaps >= 0.0.0.2 && < 0.0.1.0