Cabal-Version:       2.2

Name:                erebos
Version:             0.1.0.0
-- synopsis:
-- description:
License:             BSD-3-Clause
License-File:        LICENSE
Author:              Roman Smrž
Maintainer:          roman.smrz@seznam.cz
-- copyright:
-- category:
Build-type:          Simple
Extra-Source-Files:
    src/Erebos/ICE/pjproject.h

common common
    ghc-options:         -Wall

    build-depends:
        base >=4.13 && <4.17,

    default-extensions:
        DefaultSignatures
        ExistentialQuantification
        FlexibleContexts
        FlexibleInstances
        FunctionalDependencies
        GeneralizedNewtypeDeriving
        ImportQualifiedPost
        LambdaCase
        MultiWayIf
        RankNTypes
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TypeOperators
        TupleSections
        TypeApplications
        TypeFamilies
        TypeFamilyDependencies

    other-extensions:
        ForeignFunctionInterface
        OverloadedStrings
        RecursiveDo
        UndecidableInstances

library
    import: common
    default-language:    Haskell2010

    hs-source-dirs:      src
    exposed-modules:
        Erebos.Attach
        Erebos.Channel
        Erebos.Contact
        Erebos.Discovery
        Erebos.ICE
        Erebos.Identity
        Erebos.Message
        Erebos.Network
        Erebos.Network.Protocol
        Erebos.Pairing
        Erebos.PubKey
        Erebos.Service
        Erebos.Set
        Erebos.State
        Erebos.Storage
        Erebos.Storage.Key
        Erebos.Storage.Merge
        Erebos.Sync

        -- Used by test tool:
        Erebos.Storage.Internal
    other-modules:
        Erebos.Flow
        Erebos.Storage.List
        Erebos.Util

    c-sources:
        src/Erebos/ICE/pjproject.c
        src/Erebos/Network/ifaddrs.c
    include-dirs:
        src/Erebos/ICE
        src
    includes:
        src/Erebos/ICE/pjproject.h
    build-tool-depends:  c2hs:c2hs
    pkgconfig-depends:   libpjproject >= 2.9

    build-depends:
        async >=2.2 && <2.3,
        binary >=0.8 && <0.11,
        bytestring >=0.10 && <0.12,
        cereal >= 0.5 && <0.6,
        clock >=0.8 && < 0.9,
        containers >= 0.6 && <0.7,
        cryptonite >=0.25 && <0.31,
        deepseq >= 1.4 && <1.5,
        directory >= 1.3 && <1.4,
        filepath >=1.4 && <1.5,
        hashable >=1.3 && <1.5,
        hashtables >=1.2 && <1.4,
        hinotify >=0.4 && <0.5,
        iproute >=1.7 && <1.8,
        memory >=0.14 && <0.18,
        mime >= 0.4 && < 0.5,
        mtl >=2.2 && <2.3,
        network >= 3.1 && <3.2,
        stm >=2.5 && <2.6,
        tagged >= 0.8 && <0.9,
        text >= 1.2 && <2.1,
        time >= 1.8 && <1.14,
        unix >=2.7 && <2.8,
        uuid >=1.3 && <1.4,
        zlib >=0.6 && <0.7

executable erebos
    import: common
    default-language:    Haskell2010
    hs-source-dirs:      main
    ghc-options:         -threaded

    main-is:             Main.hs
    other-modules:
        Test

    build-depends:
        bytestring,
        cryptonite,
        erebos,
        haskeline >=0.7 && <0.9,
        mtl,
        network,
        text,
        time,
        transformers >= 0.5 && <0.7,