cabal-version:       3.0
name:                si-timers
version:             1.0.0.0
synopsis:            timers using SI units (seconds)
description:
  Timers using SI units (seconds) which are safe on 32-bit platforms and
  compatible with [io-sim](https://hackage.haskell.org/package/io-sim).
license:             Apache-2.0
license-files:
  LICENSE
  NOTICE
copyright:           2022-2023 Input Output Global Inc (IOG)
author:              Duncan Coutts, Neil Davis, Marcin Szamotulski
maintainer:          Duncan Coutts duncan@well-typed.com, Marcin Szamotulski coot@coot.me
category:            Control
build-type:          Simple
extra-source-files:  CHANGELOG.md
                     README.md
tested-with:         GHC == { 8.10, 9.2, 9.4 }

flag asserts
  description: Enable assertions
  manual:      False
  default:     False

source-repository head
  type:     git
  location: https://github.com/input-output-hk/io-sim
  subdir:   io-sim

common warnings
    ghc-options: -Wall
                 -Wcompat
                 -Widentities
                 -Wincomplete-record-updates
                 -Wincomplete-uni-patterns
                 -Wno-unticked-promoted-constructors
                 -Wpartial-fields
                 -Wredundant-constraints
                 -Wunused-packages

library
  import:              warnings
  hs-source-dirs:      src
  exposed-modules:     Control.Monad.Class.MonadTime.SI
                       Control.Monad.Class.MonadTimer.SI
  other-modules:       Control.Monad.Class.MonadTimer.NonStandard
  default-language:    Haskell2010
  other-extensions:    BangPatterns,
                       CPP,
                       ConstraintKinds,
                       DefaultSignatures,
                       DeriveGeneric,
                       NumericUnderscores,
                       ScopedTypeVariables,
                       TypeFamilies
  build-depends:       base              >=4.9 && <4.18,
                       mtl,
                       stm,
                       time              >=1.9.1 && <1.13,

                       io-classes       ^>=1.0
  if flag(asserts)
     ghc-options:      -fno-ignore-asserts

-- Since `io-sim` depends on `si-times` (`io-sim` depends on `Time`) some tests of
-- are in `io-sim:test`: this is a good enough reason to pull `io-sim:test`
-- into a seprate package.
test-suite test
  import:              warnings
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test
  main-is:             Main.hs
  other-modules:       Test.MonadTimer
  default-language:    Haskell2010
  build-depends:       base,

                       QuickCheck,
                       tasty,
                       tasty-quickcheck,

                       si-timers