f926e83a12a2a812e911e2120a7b5d0e8a32a450
[packages/binary.git] / binary.cabal
1 name:            binary
2 version:         0.8.5.0
3 license:         BSD3
4 license-file:    LICENSE
5 author:          Lennart Kolmodin <kolmodin@gmail.com>
6 maintainer:      Lennart Kolmodin, Don Stewart <dons00@gmail.com>
7 homepage:        https://github.com/kolmodin/binary
8 description:     Efficient, pure binary serialisation using lazy ByteStrings.
9                  Haskell values may be encoded to and from binary formats,
10                  written to disk as binary, or sent over the network.
11                  The format used can be automatically generated, or
12                  you can choose to implement a custom format if needed.
13                  Serialisation speeds of over 1 G\/sec have been observed,
14                  so this library should be suitable for high performance
15                  scenarios.
16 synopsis:        Binary serialisation for Haskell values using lazy ByteStrings
17 category:        Data, Parsing
18 stability:       provisional
19 build-type:      Simple
20 cabal-version:   >= 1.8
21 tested-with:     GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3
22 extra-source-files:
23   README.md changelog.md docs/hcar/binary-Lb.tex tools/derive/*.hs
24
25 -- from the benchmark 'bench'
26 extra-source-files:
27   benchmarks/CBenchmark.h
28
29 source-repository head
30   type: git
31   location: git://github.com/kolmodin/binary.git
32
33 library
34   build-depends:   base >= 4.5.0.0 && < 5, bytestring >= 0.10.4, containers, array
35   hs-source-dirs:  src
36   exposed-modules: Data.Binary,
37                    Data.Binary.Put,
38                    Data.Binary.Get,
39                    Data.Binary.Get.Internal,
40                    Data.Binary.Builder
41
42   other-modules:   Data.Binary.Class,
43                    Data.Binary.Internal,
44                    Data.Binary.Generic,
45                    Data.Binary.FloatCast
46   if impl(ghc <= 7.6)
47     -- prior to ghc-7.4 generics lived in ghc-prim
48     build-depends: ghc-prim
49
50   ghc-options:     -O2 -Wall -fliberate-case-threshold=1000
51
52   if impl(ghc >= 8.0)
53     ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
54
55 -- Due to circular dependency, we cannot make any of the test-suites or
56 -- benchmark depend on the binary library. Instead, for each test-suite and
57 -- benchmark, we include the source directory of binary and build-depend on all
58 -- the dependencies binary has.
59
60 test-suite qc
61   type:  exitcode-stdio-1.0
62   hs-source-dirs: src tests
63   main-is: QC.hs
64   other-modules:
65     Action
66     Arbitrary
67   build-depends:
68     base >= 4.5.0.0 && < 5,
69     bytestring >= 0.10.4,
70     random>=1.0.1.0,
71     test-framework,
72     test-framework-quickcheck2 >= 0.3,
73     QuickCheck == 2.9.*
74
75   -- build dependencies from using binary source rather than depending on the library
76   build-depends: array, containers
77   ghc-options: -Wall -O2 -threaded
78   if impl(ghc <= 7.6)
79     -- prior to ghc-7.4 generics lived in ghc-prim
80     build-depends: ghc-prim
81
82
83 test-suite read-write-file
84   type:  exitcode-stdio-1.0
85   hs-source-dirs: src tests
86   main-is: File.hs
87   build-depends:
88     base >= 4.5.0.0 && < 5,
89     bytestring >= 0.10.4,
90     Cabal,
91     directory,
92     filepath,
93     HUnit
94
95   -- build dependencies from using binary source rather than depending on the library
96   build-depends: array, containers
97   ghc-options: -Wall
98   if impl(ghc <= 7.6)
99     -- prior to ghc-7.4 generics lived in ghc-prim
100     build-depends: ghc-prim
101
102
103 benchmark bench
104   type: exitcode-stdio-1.0
105   hs-source-dirs: src benchmarks
106   main-is: Benchmark.hs
107   other-modules: MemBench
108   build-depends:
109     base >= 4.5.0.0 && < 5,
110     bytestring >= 0.10.4
111   -- build dependencies from using binary source rather than depending on the library
112   build-depends: array, containers
113   c-sources: benchmarks/CBenchmark.c
114   include-dirs: benchmarks
115   ghc-options: -O2
116   if impl(ghc <= 7.6)
117     -- prior to ghc-7.4 generics lived in ghc-prim
118     build-depends: ghc-prim
119
120
121 benchmark get
122   type: exitcode-stdio-1.0
123   hs-source-dirs: src benchmarks
124   main-is: Get.hs
125   build-depends:
126     attoparsec,
127     base >= 4.5.0.0 && < 5,
128     bytestring >= 0.10.4,
129     cereal,
130     criterion == 1.*,
131     deepseq,
132     mtl
133   -- build dependencies from using binary source rather than depending on the library
134   build-depends: array, containers
135   ghc-options: -O2 -Wall
136   if impl(ghc <= 7.6)
137     -- prior to ghc-7.4 generics lived in ghc-prim
138     build-depends: ghc-prim
139
140
141 benchmark put
142   type: exitcode-stdio-1.0
143   hs-source-dirs: src benchmarks
144   main-is: Put.hs
145   build-depends:
146     base >= 4.5.0.0 && < 5,
147     bytestring >= 0.10.4,
148     criterion == 1.*,
149     deepseq
150   -- build dependencies from using binary source rather than depending on the library
151   build-depends: array, containers
152   ghc-options: -O2 -Wall
153   other-modules: Data.Binary.Generic
154   if impl(ghc <= 7.6)
155     -- prior to ghc-7.4 generics lived in ghc-prim
156     build-depends: ghc-prim
157
158 benchmark generics-bench
159   type: exitcode-stdio-1.0
160   hs-source-dirs: src benchmarks
161   main-is: GenericsBench.hs
162   build-depends:
163     base >= 4.5.0.0 && < 5,
164     bytestring >= 0.10.4,
165     Cabal == 1.24.*,
166     directory,
167     filepath,
168     tar,
169     unordered-containers,
170     zlib,
171     criterion
172     
173   other-modules:
174     GenericsBenchCache
175     GenericsBenchTypes
176     Data.Binary.Generic
177   -- build dependencies from using binary source rather than depending on the library
178   build-depends: array, containers
179   ghc-options: -O2 -Wall
180   if impl(ghc <= 7.6)
181     -- prior to ghc-7.4 generics lived in ghc-prim
182     build-depends: ghc-prim
183
184 benchmark builder
185   type: exitcode-stdio-1.0
186   hs-source-dirs: src benchmarks
187   main-is: Builder.hs
188   build-depends:
189     base >= 4.5.0.0 && < 5,
190     bytestring >= 0.10.4,
191     criterion == 1.*,
192     deepseq,
193     mtl
194   -- build dependencies from using binary source rather than depending on the library
195   build-depends: array, containers
196   ghc-options: -O2
197   if impl(ghc <= 7.6)
198     -- prior to ghc-7.4 generics lived in ghc-prim
199     build-depends: ghc-prim