summaryrefslogtreecommitdiff
path: root/attoparsec.cabal
blob: d4ba45690e50fd2d05e6c5fffe8d1afa374b0d83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
cabal-version:   2.0
  -- 2.0 needed for internal libraries
name:            attoparsec
version:         0.14.4
x-revision:      4
license:         BSD3
license-file:    LICENSE
category:        Text, Parsing
author:          Bryan O'Sullivan <bos@serpentine.com>
maintainer:      Ben Gamari <ben@smart-cactus.org>
stability:       experimental
synopsis:        Fast combinator parsing for bytestrings and text
homepage:        https://github.com/haskell/attoparsec
bug-reports:     https://github.com/haskell/attoparsec/issues
build-type:      Simple
description:
    A fast parser combinator library, aimed particularly at dealing
    efficiently with network protocols and complicated text/binary
    file formats.

tested-with:
  GHC == 9.6.2
  GHC == 9.4.5
  GHC == 9.2.8
  GHC == 9.0.2
  GHC == 8.10.7
  GHC == 8.8.4
  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

extra-source-files:
    README.markdown
    benchmarks/*.txt
    benchmarks/json-data/*.json
    benchmarks/Makefile
    benchmarks/med.txt.bz2
    changelog.md
    examples/*.c
    examples/*.hs
    examples/Makefile

Flag developer
  Description: Whether to build the library in development mode
  Default: False
  Manual: True

-- We need to test and benchmark these modules,
-- but do not want to expose them to end users
library attoparsec-internal
  hs-source-dirs: internal
  build-depends: array,
                 base >= 4.5 && < 5,
                 bytestring <0.13,
                 text >= 1.1.1.3
  if !impl(ghc >= 8.0)
    build-depends: semigroups >=0.16.1 && <0.21
  exposed-modules: Data.Attoparsec.ByteString.Buffer
                   Data.Attoparsec.ByteString.FastSet
                   Data.Attoparsec.Internal.Compat
                   Data.Attoparsec.Internal.Fhthagn
                   Data.Attoparsec.Text.Buffer
                   Data.Attoparsec.Text.FastSet
  ghc-options: -O2 -Wall
  default-language: Haskell2010

library
  build-depends: array,
                 base >= 4.5 && < 5,
                 bytestring <0.13,
                 containers,
                 deepseq,
                 scientific >= 0.3.1 && < 0.4,
                 transformers >= 0.2 && (< 0.4 || >= 0.4.1.0) && < 0.7,
                 text >= 1.1.1.3,
                 ghc-prim < 0.11,
                 attoparsec-internal
  if impl(ghc < 7.4)
    build-depends:
      bytestring < 0.10.4.0

  if !impl(ghc >= 8.0)
    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
    build-depends: fail == 4.9.*,
                   semigroups >=0.16.1 && <0.21

  exposed-modules: Data.Attoparsec
                   Data.Attoparsec.ByteString
                   Data.Attoparsec.ByteString.Char8
                   Data.Attoparsec.ByteString.Lazy
                   Data.Attoparsec.Char8
                   Data.Attoparsec.Combinator
                   Data.Attoparsec.Internal
                   Data.Attoparsec.Internal.Types
                   Data.Attoparsec.Lazy
                   Data.Attoparsec.Number
                   Data.Attoparsec.Text
                   Data.Attoparsec.Text.Lazy
                   Data.Attoparsec.Types
                   Data.Attoparsec.Zepto
  other-modules:   Data.Attoparsec.ByteString.Internal
                   Data.Attoparsec.Text.Internal
  ghc-options: -O2 -Wall

  default-language: Haskell2010

  if flag(developer)
    ghc-prof-options: -auto-all
    ghc-options: -Werror

test-suite attoparsec-tests
  type:           exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is:        QC.hs
  other-modules:  QC.Buffer
                  QC.ByteString
                  QC.Combinator
                  QC.Common
                  QC.IPv6.Internal
                  QC.IPv6.Types
                  QC.Rechunked
                  QC.Simple
                  QC.Text
                  QC.Text.FastSet
                  QC.Text.Regressions

  ghc-options:
    -Wall -threaded -rtsopts

  if flag(developer)
    ghc-options: -Werror

  build-depends:
    array,
    attoparsec,
    attoparsec-internal,
    base,
    bytestring,
    deepseq >= 1.1,
    QuickCheck >= 2.13.2 && < 2.15,
    quickcheck-unicode,
    scientific,
    tasty >= 0.11,
    tasty-quickcheck >= 0.8,
    text,
    transformers,
    vector

  default-language: Haskell2010

  if !impl(ghc >= 8.0)
    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
    build-depends: fail == 4.9.*,
                   semigroups >=0.16.1 && <0.19

benchmark attoparsec-benchmarks
  type: exitcode-stdio-1.0
  hs-source-dirs: benchmarks benchmarks/warp-3.0.1.1
  ghc-options: -O2 -Wall -rtsopts
  main-is: Benchmarks.hs
  other-modules:
    Aeson
    Common
    Genome
    HeadersByteString
    HeadersByteString.Atto
    HeadersText
    Links
    Network.Wai.Handler.Warp.ReadInt
    Network.Wai.Handler.Warp.RequestHeader
    Numbers
    Sets
    TextFastSet
    Warp
  ghc-options: -O2 -Wall

  if flag(developer)
    ghc-options: -Werror

  build-depends:
    array,
    attoparsec,
    attoparsec-internal,
    base == 4.*,
    bytestring >= 0.10.4.0,
    case-insensitive,
    containers,
    deepseq >= 1.1,
    directory,
    filepath,
    ghc-prim,
    http-types,
    parsec >= 3.1.2,
    scientific,
    tasty-bench >= 0.3,
    text >= 1.1.1.0,
    transformers,
    unordered-containers,
    vector

  default-language: Haskell2010

  if !impl(ghc >= 8.0)
    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
    build-depends: fail == 4.9.*,
                   semigroups >=0.16.1 && <0.19

source-repository head
  type:     git
  location: https://github.com/haskell/attoparsec.git