packages feed

quic-0.0.1: quic.cabal

name:                quic
version:             0.0.1
synopsis:            QUIC
description:         Library for QUIC: A UDP-Based Multiplexed and Secure Transport
license:             BSD3
license-file:        LICENSE
author:              Kazu Yamamoto
maintainer:          kazu@iij.ad.jp
-- copyright:
category:            Web
build-type:          Simple
cabal-version:       >= 1.10
extra-source-files:  ChangeLog.md
extra-source-files:  cbits/*.h
extra-source-files:  cbits/picotls/*.h
extra-source-files:  test/servercert.pem
extra-source-files:  test/serverkey.pem

----------------------------------------------------------------

Source-Repository head
  Type:                 git
  Location:             git://github.com/kazu-yamamoto/quic

Flag devel
  Description:          Development commands
  Default:              False

----------------------------------------------------------------

library
  exposed-modules:     Network.QUIC
                       Network.QUIC.Client
                       Network.QUIC.Internal
                       Network.QUIC.Server
  other-modules:
                       Network.QUIC.Client.Reader
                       Network.QUIC.Client.Run
                       Network.QUIC.Closer
                       Network.QUIC.Common
                       Network.QUIC.Config
                       Network.QUIC.Connection
                       Network.QUIC.Connection.Crypto
                       Network.QUIC.Connection.Migration
                       Network.QUIC.Connection.Misc
                       Network.QUIC.Connection.PacketNumber
                       Network.QUIC.Connection.Queue
                       Network.QUIC.Connection.Role
                       Network.QUIC.Connection.State
                       Network.QUIC.Connection.Stream
                       Network.QUIC.Connection.StreamTable
                       Network.QUIC.Connection.Timeout
                       Network.QUIC.Connection.Types
                       Network.QUIC.Connector
                       Network.QUIC.Crypto
                       Network.QUIC.CryptoFusion
                       Network.QUIC.Exception
                       Network.QUIC.Handshake
                       Network.QUIC.IO
                       Network.QUIC.Imports
                       Network.QUIC.Info
                       Network.QUIC.Logger
                       Network.QUIC.Packet
                       Network.QUIC.Packet.Decode
                       Network.QUIC.Packet.Decrypt
                       Network.QUIC.Packet.Encode
                       Network.QUIC.Packet.Frame
                       Network.QUIC.Packet.Header
                       Network.QUIC.Packet.Number
                       Network.QUIC.Packet.Token
                       Network.QUIC.Parameters
                       Network.QUIC.QLogger
                       Network.QUIC.Qlog
                       Network.QUIC.Receiver
                       Network.QUIC.Recovery
                       Network.QUIC.Recovery.Constants
                       Network.QUIC.Recovery.Detect
                       Network.QUIC.Recovery.Interface
                       Network.QUIC.Recovery.LossRecovery
                       Network.QUIC.Recovery.Metrics
                       Network.QUIC.Recovery.Misc
                       Network.QUIC.Recovery.PeerPacketNumbers
                       Network.QUIC.Recovery.Persistent
                       Network.QUIC.Recovery.Release
                       Network.QUIC.Recovery.Timer
                       Network.QUIC.Recovery.Types
                       Network.QUIC.Recovery.Utils
                       Network.QUIC.Sender
                       Network.QUIC.Server.Reader
                       Network.QUIC.Server.Run
                       Network.QUIC.Socket
                       Network.QUIC.Stream
                       Network.QUIC.Stream.Frag
                       Network.QUIC.Stream.Misc
                       Network.QUIC.Stream.Queue
                       Network.QUIC.Stream.Reass
                       Network.QUIC.Stream.Skew
                       Network.QUIC.Stream.Table
                       Network.QUIC.Stream.Types
                       Network.QUIC.TLS
                       Network.QUIC.Types
                       Network.QUIC.Types.Ack
                       Network.QUIC.Types.CID
                       Network.QUIC.Types.Constants
                       Network.QUIC.Types.Error
                       Network.QUIC.Types.Exception
                       Network.QUIC.Types.Frame
                       Network.QUIC.Types.Integer
                       Network.QUIC.Types.Packet
                       Network.QUIC.Types.Queue
                       Network.QUIC.Types.Resumption
                       Network.QUIC.Types.Time
                       Network.QUIC.Utils
  -- other-extensions:
  build-depends:       base >= 4.9 && < 5
                     , array
                     , base16-bytestring >= 1.0
                     , bytestring
                     , containers
                     , crypto-token
                     , cryptonite
                     , data-default-class
                     , fast-logger >= 3.0.4
                     , filepath
                     , iproute >= 1.7.8
                     , memory
                     , network >= 3.1.2
                     , network-byte-order >= 0.1.5
                     , psqueues
                     , random >= 1.2
                     , stm
                     , tls
                     , unix-time
                     , unliftio >= 0.2.18
                     , unliftio-core
                     , x509
  -- hs-source-dirs:
  default-language:    Haskell2010
  ghc-options:         -Wall -Wcompat
  default-extensions:  Strict StrictData
  if arch(x86_64) || arch(aarch64)
    cc-options:        -mavx2 -maes -mpclmul
    c-sources:         cbits/fusion.c cbits/picotls.c

test-suite spec
  Type:                 exitcode-stdio-1.0
  default-language:     Haskell2010
  hs-source-dirs:       test
  ghc-options:          -Wall -threaded
  main-is:              Spec.hs
  other-modules:        Config
                        ErrorSpec
                        FrameSpec
                        HandshakeSpec
                        IOSpec
                        PacketSpec
                        RecoverySpec
                        TLSSpec
                        TransportError
                        TypesSpec
  build-depends:        base >= 4.9 && < 5
                      , QuickCheck
                      , async
                      , base16-bytestring >= 1.0
                      , bytestring
                      , containers
                      , cryptonite
                      , hspec
                      , network >= 3.1.2
                      , quic
                      , tls
                      , unix-time
                      , unliftio
  default-extensions:  Strict StrictData
  build-tool-depends: hspec-discover:hspec-discover


test-suite doctests
  type:                 exitcode-stdio-1.0
  default-language:     Haskell2010
  hs-source-dirs:       test
  main-is:              doctests.hs

  build-depends:        base >= 4.9 && < 5
                      , doctest >= 0.10.1

  ghc-options: -Wall
  default-extensions:  Strict StrictData

executable server
  if flag(devel)
    buildable:          True
  else
    buildable:          False
  default-language:     Haskell2010
  hs-source-dirs:       util
  main-is:              server.hs
  other-modules:        H3
                        Common
                        ServerX
  ghc-options:          -Wall -threaded -rtsopts
  build-depends:        base >= 4.9 && < 5
                      , base16-bytestring
                      , bytestring
                      , filepath
                      , http2
                      , network-byte-order
                      , quic
                      , tls
                      , tls-session-manager
                      , unliftio
  default-extensions:  Strict StrictData

executable client
  if flag(devel)
    buildable:          True
  else
    buildable:          False
  default-language:     Haskell2010
  hs-source-dirs:       util
  main-is:              client.hs
  other-modules:        H3
                        ClientX
                        Common
  ghc-options:          -Wall -threaded -rtsopts
  build-depends:        base >= 4.9 && < 5
                      , base16-bytestring
                      , bytestring
                      , filepath
                      , http2
                      , network-byte-order
                      , quic
                      , tls
                      , unix-time
                      , unliftio
  default-extensions:  Strict StrictData