--
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you under the Apache License, Version 2.0 (the
-- "License"); you may not use this file except in compliance
-- with the License. You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing,
-- software distributed under the License is distributed on an
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- KIND, either express or implied. See the License for the
-- specific language governing permissions and limitations
-- under the License.
--

Name:           thrift
Version:        1.0.0-dev
Cabal-Version:  >= 1.8
License:        OtherLicense
Category:       Foreign
Build-Type:     Simple
Synopsis:       Haskell bindings for the Apache Thrift RPC system
Homepage:       http://thrift.apache.org
Bug-Reports:    https://issues.apache.org/jira/browse/THRIFT
Maintainer:     dev@thrift.apache.org
License-File:   ../../LICENSE

Description:
  Haskell bindings for the Apache Thrift RPC system. Requires the use of the thrift code generator.

Library
  Hs-Source-Dirs:
    src
  Build-Depends:
    base >= 4, base < 5, containers, network, ghc-prim, attoparsec, binary, bytestring >= 0.10, hashable, HTTP, text, unordered-containers, vector, QuickCheck
  Exposed-Modules:
    Thrift,
    Thrift.Arbitraries
    Thrift.Protocol,
    Thrift.Protocol.Binary,
    Thrift.Protocol.Compact,
    Thrift.Protocol.JSON,
    Thrift.Server,
    Thrift.Transport,
    Thrift.Transport.Framed,
    Thrift.Transport.Handle,
    Thrift.Transport.HttpClient,
    Thrift.Transport.IOBuffer,
    Thrift.Types
  Extensions:
    DeriveDataTypeable,
    ExistentialQuantification,
    FlexibleInstances,
    KindSignatures,
    MagicHash,
    RankNTypes,
    RecordWildCards,
    ScopedTypeVariables,
    TypeSynonymInstances

Test-Suite tests
  Type:
    exitcode-stdio-1.0
  Hs-Source-Dirs:
    tests
  Build-Depends:
    base, QuickCheck, binary, bytestring, thrift
  Main-Is:
    JSONTests.hs