1Cabal-version:       1.12
2Name:                hashable
3Version:             1.3.0.0
4x-revision: 2
5Synopsis:            A class for types that can be converted to a hash value
6Description:         This package defines a class, 'Hashable', for types that
7                     can be converted to a hash value.  This class
8                     exists for the benefit of hashing-based data
9                     structures.  The package provides instances for
10                     basic types and a way to combine hash values.
11Homepage:            http://github.com/tibbe/hashable
12-- SPDX-License-Identifier : BSD-3-Clause
13License:             BSD3
14License-file:        LICENSE
15Author:              Milan Straka <fox@ucw.cz>
16                     Johan Tibell <johan.tibell@gmail.com>
17Maintainer:          johan.tibell@gmail.com
18bug-reports:         https://github.com/tibbe/hashable/issues
19Stability:           Provisional
20Category:            Data
21Build-type:          Simple
22tested-with:         GHC==8.10.1, GHC==8.8.3, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
23
24Extra-source-files:
25  CHANGES.md, README.md
26
27Flag integer-gmp
28  Description: Are we using @integer-gmp@ to provide fast Integer instances?
29  Default: True
30
31Flag sse2
32  Description: Do we want to assume that a target supports SSE 2?
33  Default: True
34  Manual: True
35
36Flag sse41
37  Description: Do we want to assume that a target supports SSE 4.1?
38  Default: False
39  Manual: True
40
41Flag examples
42  Description: Build example modules
43  Default: False
44  Manual: True
45
46Library
47  Exposed-modules:   Data.Hashable
48                     Data.Hashable.Lifted
49                     Data.Hashable.Generic
50  Other-modules:     Data.Hashable.Class
51                     Data.Hashable.Generic.Instances
52
53  C-sources:         cbits/fnv.c
54
55  Build-depends:     base       >= 4.5      && < 4.15
56                   , bytestring >= 0.9      && < 0.12
57                   , deepseq    >= 1.3      && < 1.5
58                   , text       >= 0.12     && < 1.3
59                   , ghc-prim
60
61  if flag(integer-gmp)
62    Build-depends:   integer-gmp >= 0.4 && < 1.1
63  else
64    -- this is needed for the automatic flag to be well-balanced
65    Build-depends:   integer-simple
66
67  Default-Language:  Haskell2010
68  Other-Extensions:  BangPatterns
69                     CPP
70                     DeriveDataTypeable
71                     FlexibleContexts
72                     FlexibleInstances
73                     GADTs
74                     KindSignatures
75                     MagicHash
76                     MultiParamTypeClasses
77                     ScopedTypeVariables
78                     Trustworthy
79                     TypeOperators
80                     UnliftedFFITypes
81
82  Ghc-options:       -Wall -fwarn-tabs
83
84Test-suite tests
85  Type:              exitcode-stdio-1.0
86  Hs-source-dirs:    tests
87  Main-is:           Main.hs
88  Other-modules:     Properties Regress
89  Build-depends:     base,
90                     bytestring,
91                     ghc-prim,
92                     hashable,
93                     test-framework >= 0.3.3,
94                     test-framework-hunit,
95                     test-framework-quickcheck2 >= 0.2.9,
96                     HUnit,
97                     QuickCheck >= 2.4.0.1,
98                     random >= 1.0 && < 1.2,
99                     text >= 0.11.0.5
100  if !os(windows)
101    Build-depends:   unix
102    CPP-options:     -DHAVE_MMAP
103    Other-modules:   Regress.Mmap
104    Other-Extensions: CApiFFI
105
106  Ghc-options:       -Wall -fno-warn-orphans
107  Default-Language:  Haskell2010
108
109benchmark benchmarks
110  -- We cannot depend on the hashable library directly as that creates
111  -- a dependency cycle.
112  hs-source-dirs: . benchmarks
113
114  main-is: Benchmarks.hs
115  other-modules:
116    Data.Hashable
117    Data.Hashable.Class
118    Data.Hashable.RandomSource
119    Data.Hashable.SipHash
120  type: exitcode-stdio-1.0
121
122  build-depends:
123    base,
124    bytestring,
125    criterion >= 1.0,
126    ghc-prim,
127    siphash,
128    text
129
130  if impl(ghc)
131    Build-depends:   ghc-prim,
132                     text >= 0.11.0.5
133  if impl(ghc) && flag(integer-gmp)
134    Build-depends:   integer-gmp >= 0.2
135
136  if impl(ghc >= 7.2.1)
137    CPP-Options:     -DGENERICS
138
139  include-dirs:
140    benchmarks/cbits
141
142  includes:
143    siphash.h
144
145  c-sources:
146    benchmarks/cbits/inthash.c
147    benchmarks/cbits/siphash.c
148    benchmarks/cbits/wang.c
149    cbits/fnv.c
150
151  if (arch(i386) || arch(x86_64)) && flag(sse2)
152    cpp-options: -DHAVE_SSE2
153    c-sources:
154      benchmarks/cbits/siphash-sse2.c
155
156    if flag(sse41)
157      cpp-options: -DHAVE_SSE41
158      c-sources:
159        benchmarks/cbits/siphash-sse41.c
160
161  Ghc-options:       -Wall -O2
162  if impl(ghc >= 6.8)
163    Ghc-options: -fwarn-tabs
164  else
165    c-sources:         cbits/getRandomBytes.c
166    other-modules:     Data.Hashable.RandomSource
167    if os(windows)
168      extra-libraries: advapi32
169
170  Default-Language:  Haskell2010
171
172Executable hashable-examples
173  if flag(examples)
174    build-depends: base, hashable
175  else
176    buildable: False
177  hs-source-dirs: examples
178  main-is: Main.hs
179  Default-Language:  Haskell2010
180
181source-repository head
182  type:     git
183  location: https://github.com/tibbe/hashable.git
184