name:                grpc-haskell-core
version:             0.0.0.0
synopsis:            Haskell implementation of gRPC layered on shared C library.
homepage:            https://github.com/awakenetworks/gRPC-haskell
license:             Apache-2.0
license-file:        LICENSE
author:              Awake Networks
maintainer:          opensource@awakenetworks.com
copyright:           Copyright 2016 Awake Networks
category:            Network
build-type:          Simple
cabal-version:       >=1.10
extra-source-files:  include/grpc_haskell.h
                     tests/ssl/localhost.crt
                     tests/ssl/localhost.key

Flag Debug
  Description: Adds debug logging.
  Manual:      True
  Default:     False

library
  build-depends:
      base >=4.8 && <5.0
    , clock >=0.6.0 && <0.8.0
    , bytestring ==0.10.*
    , stm >=2.4 && <2.6
    , containers >=0.5 && <0.7
    , managed >= 1.0.0 && < 1.1
    , transformers
    , sorted-list >=0.1.6.1 && <=0.3

  c-sources:
    cbits/grpc_haskell.c
  exposed-modules:
  -- NOTE: the order of these matters to c2hs.
    Network.GRPC.Unsafe.Constants
    Network.GRPC.Unsafe.Time
    Network.GRPC.Unsafe.Slice
    Network.GRPC.Unsafe.ChannelArgs
    Network.GRPC.Unsafe.ByteBuffer
    Network.GRPC.Unsafe.Metadata
    Network.GRPC.Unsafe.Op
    Network.GRPC.Unsafe
    Network.GRPC.Unsafe.Security
    Network.GRPC.LowLevel
    Network.GRPC.LowLevel.Server.Unregistered
    Network.GRPC.LowLevel.Client.Unregistered
    Network.GRPC.LowLevel.CompletionQueue
    Network.GRPC.LowLevel.CompletionQueue.Internal
    Network.GRPC.LowLevel.CompletionQueue.Unregistered
    Network.GRPC.LowLevel.GRPC
    Network.GRPC.LowLevel.Op
    Network.GRPC.LowLevel.Server
    Network.GRPC.LowLevel.Call
    Network.GRPC.LowLevel.Call.Unregistered
    Network.GRPC.LowLevel.Client
  extra-libraries:
      grpc
    , gpr
  includes:
      include/grpc_haskell.h
    , grpc/grpc.h
    , grpc/status.h
    , grpc/support/time.h
    , grpc/impl/codegen/compression_types.h
    , grpc/slice_buffer.h
    , grpc/slice.h
  build-tools:          c2hs
  default-language:     Haskell2010
  ghc-options:          -Wall -fwarn-incomplete-patterns -fno-warn-unused-do-bind
  include-dirs:         include
  hs-source-dirs:       src
  default-extensions:   CPP
  CC-Options: -std=c99
  if flag(debug)
    CPP-Options: -DDEBUG
    CC-Options:  -DGRPC_HASKELL_DEBUG -std=c99

test-suite tests
  build-depends:
      base >=4.8 && <5.0
    , grpc-haskell-core
    , bytestring ==0.10.*
    , unix
    , time
    , async >=2.1 && <2.3
    , tasty >= 0.11
    , tasty-hunit >= 0.9
    , tasty-quickcheck >= 0.8.4
    , containers >=0.5 && <0.7
    , managed >= 1.0.0 && < 1.1
    , pipes >=4.1 && <=4.4
    , proto3-suite
    , transformers
    , safe
    , clock >=0.6.0 && <0.8.0
    , turtle >= 1.2.0
    , text
    , QuickCheck >=2.8 && <3.0
  other-modules:
    LowLevelTests,
    LowLevelTests.Op,
    UnsafeTests
  default-language:     Haskell2010
  ghc-options:          -Wall -fwarn-incomplete-patterns -fno-warn-unused-do-bind -g -threaded -rtsopts
  hs-source-dirs:       tests
  main-is:              Properties.hs
  type:                 exitcode-stdio-1.0
  default-extensions:   CPP
  if flag(debug)
    CPP-Options: -DDEBUG
    CC-Options:  -DGRPC_HASKELL_DEBUG