cabal-version: 3.0

name:           quasar
version:        0.1.0.0
license:        BSD-2-Clause
build-type:     Simple
extra-source-files:
    README.md

--source-repository head
--  type: git
--  location: https://git.c3pb.de/jens/quasar.git

common shared-properties
  default-extensions:
    AllowAmbiguousTypes
    BangPatterns
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveAnyClass
    DeriveGeneric
    DerivingStrategies
    DisambiguateRecordFields
    DuplicateRecordFields
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    LambdaCase
    -- Enable once 9.0.1 is required
    --LexicalNegation
    MultiParamTypeClasses
    NamedFieldPuns
    NoImplicitPrelude
    NumericUnderscores
    OverloadedStrings
    PolyKinds
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
    TemplateHaskell
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
    ViewPatterns
  default-language: Haskell2010
  ghc-options:
    -Weverything
    -Wno-all-missed-specialisations
    -Wno-missing-safe-haskell-mode
    -Wno-missing-import-lists
    -Wno-unsafe
    -Werror=incomplete-patterns
    -Werror=missing-fields
    -Werror=missing-home-modules
    -Werror=missing-methods

common shared-executable-properties
  import: shared-properties
  ghc-options:
    -threaded
    -rtsopts
    "-with-rtsopts=-N -I0"

library
  import: shared-properties
  build-depends:
    base >=4.7 && <5,
    binary,
    containers,
    exceptions,
    ghc-prim,
    hashable,
    heaps,
    mtl,
    stm,
    time,
    transformers,
    unordered-containers,
  exposed-modules:
    Quasar
    Quasar.Async.Fork
    Quasar.Async.STMHelper
    Quasar.Async
    Quasar.Awaitable
    Quasar.Exceptions
    Quasar.Exceptions.ExceptionChannel
    Quasar.MonadQuasar
    Quasar.MonadQuasar.Misc
    Quasar.Observable
    Quasar.Observable.Delta
    Quasar.Observable.ObservableHashMap
    Quasar.Observable.ObservablePriority
    Quasar.Prelude
    Quasar.PreludeExtras
    Quasar.Resources
    Quasar.Timer
    Quasar.Timer.PosixTimer
    Quasar.Timer.TimerFd
    Quasar.Utils.Exceptions
    Quasar.Utils.ExtraT
    Quasar.Utils.TOnce
  other-modules:
    Quasar.Resources.Disposer
    Quasar.Utils.ShortIO
  hs-source-dirs:
    src

test-suite quasar-test
  import: shared-executable-properties
  type: exitcode-stdio-1.0
  build-depends:
    base >=4.7 && <5,
    exceptions,
    hspec,
    quasar,
    stm,
    unordered-containers,
  main-is: Spec.hs
  other-modules:
    Quasar.AsyncSpec
    Quasar.AwaitableSpec
    Quasar.ObservableSpec
    Quasar.Observable.ObservableHashMapSpec
    Quasar.Observable.ObservablePrioritySpec
    Quasar.ResourcesSpec
  hs-source-dirs:
    test