packages feed

second-transfer-0.10.0.4: second-transfer.cabal

name        :              second-transfer

-- The package version.  See the Haskell package versioning policy (PVP) 
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP       summary:      +-+------- breaking API changes
--                         | | +----- non-breaking API additions
--                         | | | +--- code changes with no API change
version     :              0.10.0.4

synopsis    :              Second Transfer HTTP/2 web server

description :              Second Transfer HTTP/2 web server

homepage    :              https://www.httptwo.com/second-transfer/

license     :              BSD3

license-file:              LICENSE

author      :              Alcides Viamontes Esquivel

maintainer  :              alcidesv@zunzun.se

copyright   :              Copyright 2015, Alcides Viamontes Esquivel

category    :              Network

stability   :              experimental

bug-reports :              https://github.com/alcidesv/second-transfer/issues

build-type  :              Simple

-- Extra files to be distributed with the package-- such as examples or a
-- README.
extra-source-files:  README.md changelog.md

-- Constraint on the version of Cabal needed to build this package.
cabal-version:       >=1.10

extra-source-files: macros/instruments.cpphs

Flag debug
  Description: Enable debug support
  Default:     False

Flag enable-botan
  Description: Enable Botan (No TLS support without this)
  Default: False

Flag misc-executables
  Description: Compile helpers for development
  Default: False

source-repository head
  type:     git
  location: git@github.com:alcidesv/second-transfer.git

source-repository this
  type:     git
  location: git@github.com:alcidesv/second-transfer.git
  tag:      v0.10.0.4

library

  exposed-modules:  SecondTransfer
                  , SecondTransfer.MainLoop
                  , SecondTransfer.Http2
                  , SecondTransfer.Http1
                  , SecondTransfer.Exception
                  , SecondTransfer.Types
                  , SecondTransfer.Utils.HTTPHeaders
                  , SecondTransfer.Utils.DevNull

                  , SecondTransfer.TLS.CoreServer
                  , SecondTransfer.TLS.Types

                  , SecondTransfer.Socks5.Types
                  , SecondTransfer.Socks5.Session

                  , SecondTransfer.Sessions
                  , SecondTransfer.Sessions.Config

                  , SecondTransfer.Http1.Parse
                  , SecondTransfer.Http1.Types
                  , SecondTransfer.Http1.Proxy

                  -- These ones should probably go in their own package
                  , SecondTransfer.IOCallbacks.Types
                  , SecondTransfer.IOCallbacks.SocketServer
                  , SecondTransfer.IOCallbacks.WrapSocket
                  , SecondTransfer.IOCallbacks.Coupling
                  , SecondTransfer.IOCallbacks.SaveFragment

                  -- These are really internal modules, but  are exposed
                  -- here for the sake of the test suite. They are hidden
                  -- from the documentation.
                  , SecondTransfer.MainLoop.Internal
                  , SecondTransfer.MainLoop.Disruptible
                  , SecondTransfer.MainLoop.CoherentWorker

                  -- These are instrumentation utilities, they are mostly
                  -- disabled if the flag monitoring is off.
                  , SecondTransfer.MainLoop.Logging
                  , SecondTransfer.MainLoop.DebugMonitor


                  -- TODO: Most of these should be moved back to "other-modules"
                  , SecondTransfer.Sessions.Internal
                  , SecondTransfer.Sessions.Tidal
                  , SecondTransfer.Sessions.HashableSockAddr
                  , SecondTransfer.Http2.Session
                  , SecondTransfer.Http2.Framer
                  , SecondTransfer.MainLoop.ClientPetitioner


  other-modules:    SecondTransfer.MainLoop.Protocol
                  , SecondTransfer.MainLoop.Tokens
                  , SecondTransfer.MainLoop.Framer

                  , SecondTransfer.Utils
                  , SecondTransfer.ConstantsAndLimits

                  , SecondTransfer.Socks5.Serializers
                  , SecondTransfer.Socks5.Parsers

                  , SecondTransfer.Http2.MakeAttendant
                  , SecondTransfer.Http2.SimpleClient
                  , SecondTransfer.Http2.TransferTypes
                  , SecondTransfer.Http2.OutputTray
                  , SecondTransfer.Http2.CalmState

                  , SecondTransfer.Http1.Session
                  , SecondTransfer.IOCallbacks.Botcher


  if flag(enable-botan)
      exposed-modules:   SecondTransfer.TLS.Botan

  build-tools: cpphs

  default-extensions: CPP

  if flag(enable-botan)
     CPP-Options: -DINCLUDE_BOTAN_H
     -- A default directory for botan.... you can have your own
     -- through a stack flag. 
     include-dirs: /usr/local/include/botan-1.11/
  else
     CPP-Options: -DBOTAN_DISABLED


  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:

  -- Other library packages from which modules are imported.
  build-depends: base >= 4.7 && <= 4.9,
                 exceptions >= 0.8 && < 0.9,
                 bytestring >= 0.10.4,
                 base16-bytestring >= 0.1.1,
                 network >= 2.6 && < 2.7,
                 network-uri >= 2.6,
                 text >= 1.2 && < 1.3,
                 binary >= 0.7.1.0,
                 containers >= 0.5.5,
                 conduit >= 1.2.4 && < 1.3,
                 transformers >=0.3 && <= 0.5,
                 network-uri >= 2.6 && < 2.7,
                 hashtables >= 1.2 && < 1.3,
                 lens >= 4.7 ,
                 http2 >= 1.0.2 && < 1.4,
                 hashable >= 1.2,
                 attoparsec >= 0.12,
                 clock >= 0.6,
                 resourcet >= 1.1,
                 BoundedChan >= 1.0.3,
                 pqueue >= 1.3.0,
                 stm >= 2.3,
                 deepseq >= 1.4.1,
                 time >= 1.5.0 && < 1.8,
                 vector >= 0.10 && < 0.13,
                 vector-algorithms >= 0.7,
                 mmorph >= 1.0

  -- Directories containing source files.
  hs-source-dirs: hs-src

  -- Base language which the package is written in.
  default-language: Haskell2010

  include-dirs:  /usr/local/include/botan-1.11

  if flag(debug)
      cc-options: -O0 -g3 -std=c++11
      ld-options: -g3
  else
      cc-options: -std=c++11 -mavx2 -msse4.1 -msse2 -mpclmul -maes
  if os(linux)
      ghc-options: -pgmPcpphs "-pgmc g++"  -optP--cpp
  if os(darwin)
      ghc-options: -pgmPcpphs "-pgmc g++-5" "-pgml g++-5"  -optP--cpp

  --               v------ remove this
  if os(linux)
      if flag(enable-botan)
        c-sources:       cbits/enable_tls.cpp


  if os(darwin)
      if flag(enable-botan)
          extra-libraries: second_transfer__enable_tls
          extra-lib-dirs: /usr/local/shimmercat-build/
          ld-options: -framework Security
  if os(linux)
      extra-libraries: stdc++
      extra-lib-dirs: /usr/local
  if flag(enable-botan)
      if os(linux)
          extra-libraries: botan-1.11

  include-dirs: macros/

-- These are just some tests for the engine, there should
-- be more as an independent python test suite, checking
-- more stuff.
Test-Suite hunit-tests
  type               : exitcode-stdio-1.0
  main-is            : hunit_tests.hs
  hs-source-dirs     : tests/tests-hs-src
  default-language   : Haskell2010
  build-depends      : base >=4.7 && <= 4.9
                       ,conduit >= 1.2.4
                       ,lens  >= 4.7
                       ,HUnit >= 1.2 && < 1.5
                       ,bytestring >= 0.10.4.0
                       ,http2
                       ,network >= 2.6 && < 2.7
                       ,text >= 1.2 && < 1.3
                       ,binary >= 0.7.1.0
                       ,containers >= 0.5.5
                       ,network-uri >= 2.6 && < 2.7
                       ,hashtables >= 1.2 && < 1.3
                       ,unordered-containers
                       ,transformers >=0.3 && <= 0.5
                       ,second-transfer
                       ,stm >= 2.4

  build-tools        : cpphs
  default-extensions : CPP
  include-dirs       : macros/
  ghc-options        : -threaded -pgmPcpphs "-pgmc gcc"  -optP--cpp
  other-modules      :  SecondTransfer.Test.DecoySession
                       , Tests.HTTP1Parse
                       , Tests.HTTP2Session
                       , Tests.TestIOCalbks
                       , Tests.Utils