File snap-server.cabal of Package ghc-snap-server

name:           snap-server
version:        1.0.2.2
x-revision: 1
synopsis:       A web server for the Snap Framework
description:
  Snap is a simple and fast web development framework and server written in
  Haskell. For more information or to download the latest version, you can
  visit the Snap project website at <http://snapframework.com/>.
  .
  The Snap HTTP server is a high performance web server library written in
  Haskell. Together with the @snap-core@ library upon which it depends, it
  provides a clean and efficient Haskell programming interface to the HTTP
  protocol.

license:        BSD3
license-file:   LICENSE
author:         Snap Framework Authors  (see CONTRIBUTORS)
maintainer:     snap@snapframework.com
build-type:     Simple
cabal-version:  >= 1.10
homepage:       http://snapframework.com/
category:       Web, Snap, IO-Streams

extra-source-files:
  CONTRIBUTORS,
  LICENSE,
  README.md,
  README.SNAP.md,
  test/bad_key.pem,
  test/cert.pem,
  test/dummy.txt,
  test/key.pem,
  testserver/static/hello.txt


Flag portable
  Description: Compile in cross-platform mode. No platform-specific code or
               optimizations such as C routines will be used.
  Default: False

Flag openssl
  Description: Enable https support using the HsOpenSSL library.
  Default: False
  Manual: True

Flag build-pong
  Description: Build a server that just returns "PONG"? Normally useful only
               for benchmarks.
  Default: False
  Manual: True

Flag build-testserver
  Description: Build the blackbox testserver?
  Default: False
  Manual: True

Flag debug
  Description: Enable support for debugging.
  Default: False
  Manual: True

Library
  hs-source-dirs:    src
  Default-language:  Haskell2010

  exposed-modules:
    Snap.Http.Server,
    Snap.Http.Server.Config,
    Snap.Http.Server.Types,
    Snap.Internal.Http.Server.Config,
    Snap.Internal.Http.Server.Types,
    System.FastLogger

  other-modules:
    Paths_snap_server,
    Control.Concurrent.Extended,
    Snap.Internal.Http.Server.Address,
    Snap.Internal.Http.Server.Clock,
    Snap.Internal.Http.Server.Common,
    Snap.Internal.Http.Server.Date,
    Snap.Internal.Http.Server.Parser,
    Snap.Internal.Http.Server.Session,
    Snap.Internal.Http.Server.Socket,
    Snap.Internal.Http.Server.Thread,
    Snap.Internal.Http.Server.TimeoutManager,
    Snap.Internal.Http.Server.TLS

  build-depends:
    attoparsec                          >= 0.12     && < 0.14,
    base                                >= 4        && < 5,
    blaze-builder                       >= 0.4      && < 0.5,
    bytestring                          >= 0.9.1    && < 0.11,
    bytestring-builder                  >= 0.10.4   && < 0.11,
    case-insensitive                    >= 1.1      && < 1.3,
    clock                               >= 0.7.1    && < 0.8,
    containers                          >= 0.3      && < 0.6,
    filepath                            >= 1.1      && < 2.0,
    io-streams                          >= 1.3      && < 1.5,
    io-streams-haproxy                  >= 1.0      && < 1.1,
    lifted-base                         >= 0.1      && < 0.3,
    mtl                                 >= 2.0      && < 2.3,
    network                             >= 2.3      && < 2.7,
    old-locale                          >= 1.0      && < 1.1,
    snap-core                           >= 1.0      && < 1.1,
    text                                >= 0.11     && < 1.3,
    time                                >= 1.0      && < 1.9,
    unix-compat                         >= 0.2      && < 0.5,
    vector                              >= 0.7      && < 0.13

  other-extensions:
    BangPatterns,
    CPP,
    MagicHash,
    Rank2Types,
    OverloadedStrings,
    ScopedTypeVariables,
    DeriveDataTypeable,
    PackageImports,
    ViewPatterns,
    ForeignFunctionInterface,
    EmptyDataDecls,
    GeneralizedNewtypeDeriving

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
  else
    build-depends: unix                         < 2.8

  if flag(openssl)
    cpp-options: -DOPENSSL
    build-depends: HsOpenSSL       >= 0.10.4 && < 0.12,
                   openssl-streams >= 1.1    && < 1.3

  if os(linux) && !flag(portable)
    cpp-options: -DLINUX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Linux

  if os(darwin) && !flag(portable)
    cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Darwin

  if os(freebsd) && !flag(portable)
    cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.FreeBSD

  if impl(ghc >= 6.12.0)
    ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-unused-do-bind
  else
    ghc-options: -Wall -fwarn-tabs -funbox-strict-fields

  if flag(debug)
    cpp-options: -DLABEL_THREADS

Test-suite testsuite
  hs-source-dirs:    src test
  Type:              exitcode-stdio-1.0
  Main-is:           TestSuite.hs
  Default-language:  Haskell2010

  other-modules:
    Paths_snap_server,
    Snap.Http.Server,
    Snap.Http.Server.Config,
    Snap.Http.Server.Types,
    Snap.Internal.Http.Server.Address,
    Snap.Internal.Http.Server.Clock,
    Snap.Internal.Http.Server.Common,
    Snap.Internal.Http.Server.Config,
    Snap.Internal.Http.Server.Date,
    Snap.Internal.Http.Server.Parser,
    Snap.Internal.Http.Server.Session,
    Snap.Internal.Http.Server.Socket,
    Snap.Internal.Http.Server.Thread,
    Snap.Internal.Http.Server.TimeoutManager,
    Snap.Internal.Http.Server.TLS
    Snap.Internal.Http.Server.Types,
    System.FastLogger,

    Snap.Internal.Http.Server.Address.Tests,
    Snap.Internal.Http.Server.Parser.Tests,
    Snap.Internal.Http.Server.Session.Tests,
    Snap.Internal.Http.Server.Socket.Tests,
    Snap.Internal.Http.Server.TimeoutManager.Tests,
    Snap.Test.Common,
    Test.Blackbox,
    Test.Common.Rot13,
    Test.Common.TestHandler

  build-depends:
    attoparsec                          >= 0.12     && < 0.14,
    base                                >= 4        && < 5,
    base16-bytestring                   >= 0.1      && < 0.2,
    blaze-builder                       >= 0.4      && < 0.5,
    bytestring-builder                  >= 0.10.4   && < 0.11,
    bytestring                          >= 0.9.1    && < 0.11,
    case-insensitive                    >= 1.1      && < 1.3,
    clock                               >= 0.7.1    && < 0.8,
    containers                          >= 0.3      && < 0.6,
    directory                           >= 1.0      && < 1.4,
    filepath                            >= 1.1      && < 2.0,
    io-streams,
    io-streams-haproxy                  >= 1.0      && < 1.1,
    lifted-base                         >= 0.1      && < 0.3,
    monad-control                       >= 1.0      && < 1.1,
    mtl                                 >= 2.0      && < 2.3,
    network                             >= 2.3      && < 2.7,
    old-locale                          >= 1.0      && < 1.1,
    random                              >= 1.0      && < 1.2,
    snap-core                           >= 1.0      && < 1.1,
    text                                >= 0.11     && < 1.3,
    threads                             >= 0.5      && < 0.6,
    time                                >= 1.0      && < 1.7,
    transformers                        >= 0.3      && < 0.6,
    unix-compat                         >= 0.2      && < 0.5,
    vector                              >= 0.7      && < 0.13,

    HUnit                               >= 1.2      && < 2,
    QuickCheck                          >= 2.3.0.2  && < 3,
    deepseq                             >= 1.3      && < 2,
    http-streams                        >= 0.7      && < 0.9,
    http-common                         >= 0.7      && < 0.9,
    parallel                            >= 3        && < 4,
    test-framework                      >= 0.8.0.3  && < 0.9,
    test-framework-hunit                >= 0.2.7    && < 0.4,
    test-framework-quickcheck2          >= 0.2.12.1 && < 0.4

  other-extensions:
    BangPatterns,
    CPP,
    MagicHash,
    Rank2Types,
    OverloadedStrings,
    ScopedTypeVariables,
    DeriveDataTypeable,
    PackageImports,
    ViewPatterns,
    ForeignFunctionInterface,
    EmptyDataDecls,
    GeneralizedNewtypeDeriving

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
  else
    build-depends: unix                         < 2.8

  -- always label threads in testsuite
  cpp-options: -DLABEL_THREADS

  if flag(openssl)
    cpp-options: -DOPENSSL
    build-depends: HsOpenSSL       >= 0.10.4 && < 0.12,
                   openssl-streams >= 1.1    && < 1.3

  if os(linux) && !flag(portable)
    cpp-options: -DLINUX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Linux,
      System.SendFile.Tests
    c-sources: test/cbits/errno_util.c


  if os(darwin) && !flag(portable)
    cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Darwin,
      System.SendFile.Tests
    c-sources: test/cbits/errno_util.c

  if os(freebsd) && !flag(portable)
    cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.FreeBSD,
      System.SendFile.Tests
    c-sources: test/cbits/errno_util.c

  cpp-options: -DTESTSUITE

  ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
               -fno-warn-unused-do-bind -threaded


Benchmark benchmark
  type:             exitcode-stdio-1.0
  hs-source-dirs:   benchmark src
  main-is:          Benchmark.hs
  default-language: Haskell2010

  other-modules:
    Snap.Internal.Http.Parser.Benchmark,
    Snap.Internal.Http.Parser.Data,
    Snap.Internal.Http.Server.Parser

  build-depends:
    attoparsec                          >= 0.12    && < 0.14,
    base                                >= 4       && < 5,
    blaze-builder                       >= 0.4     && < 0.5,
    bytestring                          >= 0.9     && < 0.11,
    bytestring-builder                  >= 0.10.4  && < 0.11,
    criterion                           >= 0.6     && < 1.3,
    io-streams,
    io-streams-haproxy                  >= 1.0     && < 1.1,
    snap-core                           >= 1.0     && < 1.1,
    vector                              >= 0.7     && < 0.13

  ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
               -fno-warn-unused-do-bind -rtsopts

  other-extensions:
    BangPatterns,
    CPP,
    MagicHash,
    Rank2Types,
    OverloadedStrings,
    ScopedTypeVariables,
    DeriveDataTypeable,
    PackageImports,
    ViewPatterns,
    ForeignFunctionInterface,
    EmptyDataDecls,
    GeneralizedNewtypeDeriving

Executable snap-test-pong-server
  hs-source-dirs: src pong
  main-is: Main.hs

  if !flag(build-pong)
    buildable: False

  default-language: Haskell2010

  other-modules:
    Paths_snap_server,
    Snap.Internal.Http.Server.Address,
    Snap.Internal.Http.Server.Clock,
    Snap.Internal.Http.Server.Common,
    Snap.Internal.Http.Server.Config,
    Snap.Internal.Http.Server.Date,
    Snap.Internal.Http.Server.Parser,
    Snap.Internal.Http.Server.Session,
    Snap.Internal.Http.Server.Socket,
    Snap.Internal.Http.Server.Thread,
    Snap.Internal.Http.Server.TimeoutManager,
    Snap.Internal.Http.Server.TLS,
    Snap.Internal.Http.Server.Types

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
  else
    build-depends: unix                         < 2.8

  if os(linux) && !flag(portable)
    cpp-options: -DLINUX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Linux

  if os(darwin) && !flag(portable)
    cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Darwin

  if os(freebsd) && !flag(portable)
    cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.FreeBSD

  if flag(openssl)
    cpp-options: -DOPENSSL
    build-depends: HsOpenSSL            >= 0.10.4   && < 0.12,
                   openssl-streams      >= 1.1      && < 1.3

  build-depends:
    attoparsec                          >= 0.12     && < 0.14,
    base                                >= 4        && < 5,
    blaze-builder                       >= 0.4      && < 0.5,
    bytestring                          >= 0.9.1    && < 0.11,
    bytestring-builder                  >= 0.10.4   && < 0.11,
    case-insensitive                    >= 1.1      && < 1.3,
    clock                               >= 0.7.1    && < 0.8,
    containers                          >= 0.3      && < 0.6,
    io-streams,
    io-streams-haproxy                  >= 1.0      && < 1.1,
    lifted-base                         >= 0.1      && < 0.3,
    mtl                                 >= 2.0      && < 2.3,
    network                             >= 2.3      && < 2.7,
    old-locale                          >= 1.0      && < 1.1,
    snap-core                           >= 1.0      && < 1.1,
    text                                >= 0.11     && < 1.3,
    time                                >= 1.0      && < 1.7,
    unix-compat                         >= 0.2      && < 0.5,
    vector                              >= 0.7      && < 0.13

  ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
               -fno-warn-unused-do-bind -threaded -rtsopts

  other-extensions:
    BangPatterns,
    CPP,
    MagicHash,
    Rank2Types,
    OverloadedStrings,
    ScopedTypeVariables,
    DeriveDataTypeable,
    PackageImports,
    ViewPatterns,
    ForeignFunctionInterface,
    EmptyDataDecls,
    GeneralizedNewtypeDeriving


Executable snap-test-server
  hs-source-dirs: src testserver test
  main-is: Main.hs

  if !flag(build-testserver)
    buildable: False

  if flag(openssl)
    cpp-options: -DOPENSSL
    build-depends: HsOpenSSL       >= 0.10.4 && < 0.12,
                   openssl-streams >= 1.1    && < 1.3

  default-language: Haskell2010

  other-modules:
    Paths_snap_server,
    Snap.Internal.Http.Server.Address,
    Snap.Internal.Http.Server.Clock,
    Snap.Internal.Http.Server.Common,
    Snap.Internal.Http.Server.Config,
    Snap.Internal.Http.Server.Date,
    Snap.Internal.Http.Server.Parser,
    Snap.Internal.Http.Server.Session,
    Snap.Internal.Http.Server.Socket,
    Snap.Internal.Http.Server.Thread,
    Snap.Internal.Http.Server.TimeoutManager,
    Snap.Internal.Http.Server.TLS,
    Snap.Internal.Http.Server.Types

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
  else
    build-depends: unix < 2.8

  if os(linux) && !flag(portable)
    cpp-options: -DLINUX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Linux

  if os(darwin) && !flag(portable)
    cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.Darwin

  if os(freebsd) && !flag(portable)
    cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
    other-modules:
      System.SendFile,
      System.SendFile.FreeBSD

  build-depends:
    attoparsec                          >= 0.12     && < 0.14,
    base                                >= 4        && < 5,
    blaze-builder                       >= 0.4      && < 0.5,
    bytestring                          >= 0.9.1    && < 0.11,
    bytestring-builder                  >= 0.10.4   && < 0.11,
    case-insensitive                    >= 1.1      && < 1.3,
    clock                               >= 0.7.1    && < 0.8,
    containers                          >= 0.3      && < 0.6,
    directory                           >= 1.1      && < 1.4,
    io-streams,
    io-streams-haproxy                  >= 1.0      && < 1.1,
    lifted-base                         >= 0.1      && < 0.3,
    mtl                                 >= 2.0      && < 2.3,
    network                             >= 2.3      && < 2.7,
    old-locale                          >= 1.0      && < 1.1,
    snap-core                           >= 1.0      && < 1.1,
    text                                >= 0.11     && < 1.3,
    time                                >= 1.0      && < 1.7,
    transformers                        >= 0.3      && < 0.6,
    unix-compat                         >= 0.2      && < 0.5,
    vector                              >= 0.7      && < 0.13

  ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
               -fno-warn-unused-do-bind -threaded -rtsopts

  other-extensions:
    BangPatterns,
    CPP,
    MagicHash,
    Rank2Types,
    OverloadedStrings,
    ScopedTypeVariables,
    DeriveDataTypeable,
    PackageImports,
    ViewPatterns,
    ForeignFunctionInterface,
    EmptyDataDecls,
    GeneralizedNewtypeDeriving

source-repository head
  type:     git
  location: git://github.com/snapframework/snap-server.git
openSUSE Build Service is sponsored by