name:                  entwine
version:               0.0.3
license:               BSD3
license-file:          LICENSE
author:                Ambiata <info@ambiata.com>
maintainer:            Tim McGilchrist <timmcgil@gmail.com>
homepage:              https://github.com/tmcgilchrist/entwine
bug-reports:           https://github.com/tmcgilchrist/entwine/issues
copyright:             (c) 2015 Ambiata.
synopsis:              entwine - Concurrency tools
category:              System
cabal-version:         >= 1.8
build-type:            Simple
description:           Entwine provides concurrency types and tools for building correct software.

tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4
extra-source-files:
  README.md
  Changes.md

source-repository head
    type:             git
    location:         https://github.com/tmcgilchrist/entwine.git

library
  build-depends:
                       base                            >= 3          && < 5
                     , async                           == 2.2.*
                     , clock                           >= 0.6        && < 0.8
                     , containers                      >= 0.5        && < 0.7
                     , exceptions                      >= 0.6        && < 0.9
                     , monad-loops                     == 0.4.*
                     , retry
                     , SafeSemaphore                   == 0.10.*
                     , semigroups                      == 0.18.*
                     , stm                             == 2.5.*
                     , text                            == 1.2.*
                     , time                            >= 1.4        && < 1.9
                     , transformers                    >= 0.3        && < 0.6
                     , transformers-either             == 0.1.*

  ghc-options:
                       -Wall

  hs-source-dirs:
                       src


  exposed-modules:
                       Entwine
                       Entwine.Async
                       Entwine.Data
                       Entwine.Data.Duration
                       Entwine.Data.Finalizer
                       Entwine.Data.Gate
                       Entwine.Data.Parallel
                       Entwine.Data.Pin
                       Entwine.Data.Queue
                       Entwine.Loop
                       Entwine.P
                       Entwine.Parallel
                       Entwine.Snooze
                       Entwine.Guard

test-suite test
  type:                exitcode-stdio-1.0

  main-is:             test.hs

  ghc-options:         -Wall

  hs-source-dirs:
                       test

  other-modules:       Test.Disorder
                       Test.Entwine.Async
                       Test.Entwine.Data.Duration
                       Test.Entwine.Data.Finalizer
                       Test.Entwine.Data.Gate
                       Test.Entwine.Data.Parallel
                       Test.Entwine.Data.Pin
                       Test.Entwine.Data.Queue
                       Test.Entwine.Parallel


  build-depends:
                       base                            >= 3          && < 5
                     , entwine
                     , async                           == 2.2.*
                     , directory                       >= 1.2        && < 1.4
                     , exceptions                      >= 0.6        && < 0.9
                     , process                         >= 1.2        && < 1.7
                     , text                            == 1.2.*
                     , time
                     , transformers                    >= 0.3        && < 0.6
                     , transformers-either             == 0.1.*
                     , QuickCheck                      == 2.10.*
                     , quickcheck-instances            == 0.3.*


test-suite test-io
  type:                exitcode-stdio-1.0

  main-is:             test-io.hs

  ghc-options:         -Wall

  hs-source-dirs:
                       test

  other-modules:       Test.Disorder
                       Test.IO.Entwine.Guard
                       Test.IO.Entwine.Loop
                       Test.IO.Entwine.Snooze

  build-depends:
                       base                            >= 3          && < 5
                     , entwine
                     , async                           == 2.2.*
                     , directory                       >= 1.2        && < 1.4
                     , exceptions
                     , process                         >= 1.2        && < 1.7
                     , text
                     , time
                     , transformers
                     , transformers-either
                     , QuickCheck                      == 2.10.*
                     , quickcheck-instances            == 0.3.*

benchmark bench
  type:                exitcode-stdio-1.0
  main-is:             bench.hs
  ghc-options:         -Wall -threaded -O2
  hs-source-dirs:      test
  build-depends:       base
                     , entwine
                     , criterion                       >= 1.2        && < 1.6
                     , directory                       >= 1.2        && < 1.4
                     , process                         >= 1.2        && < 1.7
                     , QuickCheck
                     , quickcheck-instances            == 0.3.*
                     , quickcheck-properties           == 0.1.*
                     , quickcheck-text                 == 0.1.*
                     , random
                     , text
                     , transformers
                     , transformers-either