--
-- 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:        0.2.0
Cabal-Version:  >= 1.4
License:        OtherLicense
Category:       Foreign
Build-Type:     Simple
Synopsis:       Apache Thrift bindings
Maintainer:     christian.lavoie@gmail.com
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, network, ghc-prim, binary, bytestring, HTTP
  Exposed-Modules:
    Thrift, Thrift.Protocol, Thrift.Transport, Thrift.Protocol.Binary
    Thrift.Transport.Handle, Thrift.Transport.HttpClient, Thrift.Server
  Extensions:
    DeriveDataTypeable, ExistentialQuantification, FlexibleInstances,
    KindSignatures, MagicHash, RankNTypes,
    ScopedTypeVariables, TypeSynonymInstances

