packages feed

datafix-0.0.1.0: datafix.cabal

name:                datafix
version:             0.0.1.0
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:           © 2017-2020 Sebastian Graf
homepage:            https://github.com/sgraf812/datafix
bug-reports:         https://github.com/sgraf812/datafix/issues

category:            Compiler
build-type:          Custom
stability:           alpha (experimental)
-- We have autogen-modules, so we need Cabal 2.0
cabal-version:       2.0
tested-with:         GHC==8.8.1, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2

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

custom-setup
  setup-depends:
      base
    , Cabal
    , cabal-doctest >= 1 && < 1.1
    , 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.FrameworkBuilder
                     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.7
                   , 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.8
                   -- Prior to 0.2, pomaps used to offer a flag to compile without
                   -- lattices that confuses CI
                   , pomaps >= 0.2 && < 0.3
                   , lattices

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
                     SetRecurrences.FirstFollow
                     Fib
                     Fac
                     Mutual
                     Critical
                     Trivial
                     StrAnal
                     FirstFollow
  build-depends:     base >= 4.8 && < 5
                   , 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
                   , lattices < 2

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
                   , QuickCheck >= 2.5
                   , datafix
  other-modules:     Build_doctests
  autogen-modules:   Build_doctests

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:     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
                     Sum
  build-depends:     base >= 4.8 && < 5
                   , Cabal
                   , cabal-toolkit >= 0.0.4
                   , criterion >= 1.1
                   , deepseq
                   , containers
                   , primitive
                   , transformers < 0.6
                   , datafix
                   , ghc
                   , ghc-paths
                   , directory
                   , filepath
                   , turtle
                   , text
                   , lattices < 2

executable firstfollow-example
  default-language:  Haskell2010
  hs-source-dirs:    examples
  main-is:           SetRecurrences/FirstFollow/Main.hs
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N
  other-modules:     SetRecurrences.FirstFollow
  build-depends:     base
                   , containers
                   , datafix