Blob Blame History Raw
name:                aeson-benchmarks
version:             0
build-type:          Simple

cabal-version:       >=1.8

flag bytestring-builder
  description: Depend on the bytestring-builder package for backwards compatibility.
  default: False
  manual: False

library
  default-language: Haskell2010
  hs-source-dirs: .. . ../ffi ../pure ../attoparsec-iso8601
  c-sources:  ../cbits/unescape_string.c
  exposed-modules:
    Data.Aeson
    Data.Aeson.Encoding
    Data.Aeson.Encoding.Builder
    Data.Aeson.Encoding.Internal
    Data.Aeson.Internal
    Data.Aeson.Internal.Functions
    Data.Aeson.Internal.Time
    Data.Aeson.Parser
    Data.Aeson.Parser.Internal
    Data.Aeson.Parser.Time
    Data.Aeson.Parser.Unescape
    Data.Aeson.Parser.UnescapeFFI
    Data.Aeson.Parser.UnescapePure
    Data.Aeson.TH
    Data.Aeson.Text
    Data.Aeson.Types
    Data.Aeson.Types.Class
    Data.Aeson.Types.FromJSON
    Data.Aeson.Types.Generic
    Data.Aeson.Types.Internal
    Data.Aeson.Types.ToJSON
    Data.Attoparsec.Time
    Data.Attoparsec.Time.Internal

  build-depends:
    attoparsec >= 0.13.0.1,
    base == 4.*,
    base-compat >= 0.9.1 && <0.10,
    time-locale-compat >=0.1.1 && <0.2,
    containers,
    deepseq,
    dlist >= 0.2,
    fail == 4.9.*,
    ghc-prim >= 0.2,
    hashable >= 1.1.2.0,
    mtl,
    scientific >= 0.3.4.7 && < 0.4,
    syb,
    tagged >=0.8.3 && <0.9,
    template-haskell >= 2.4,
    text >= 1.1.1.0,
    th-abstraction >= 0.2.2 && < 0.3,
    time,
    transformers,
    unordered-containers >= 0.2.3.0,
    uuid-types >= 1.0.3 && <1.1,
    vector >= 0.7.1

  if flag(bytestring-builder)
    build-depends: bytestring >= 0.9 && < 0.10.4,
                   bytestring-builder >= 0.10.4 && < 1
  else
    build-depends: bytestring >= 0.10.4

  if impl(ghc >=7.8)
    cpp-options: -DHAS_COERCIBLE

  if !impl(ghc >= 8.0)
    -- `Data.Semigroup` is available in base only since GHC 8.0 / base 4.9
    build-depends: semigroups >= 0.18.2 && < 0.19

  include-dirs: ../include

  ghc-options: -O2 -Wall
  cpp-options: -DGENERICS

executable aeson-benchmark-escape
  main-is: Escape.hs
  hs-source-dirs: ../examples .
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    base,
    base-compat,
    bytestring,
    criterion >= 1.0,
    deepseq,
    ghc-prim,
    text

executable aeson-benchmark-compare
  main-is: Compare.hs
  hs-source-dirs: ../examples .
  ghc-options: -Wall -O2 -rtsopts
  other-modules:
    Compare.BufferBuilder
    Compare.JsonBench
    Compare.JsonBuilder
    Twitter
    Twitter.Manual
    Typed.Common
  build-depends:
    aeson-benchmarks,
    base,
    base-compat,
    buffer-builder,
    bytestring,
    criterion >= 1.0,
    deepseq,
    ghc-prim,
    json-builder,
    text

executable aeson-benchmark-micro
  main-is: Micro.hs
  hs-source-dirs: ../examples .
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    base,
    base-compat,
    bytestring,
    criterion >= 1.0,
    deepseq,
    ghc-prim,
    text

executable aeson-benchmark-typed
  main-is: Typed.hs
  hs-source-dirs: ../examples .
  ghc-options: -Wall -O2 -rtsopts
  -- We must help ourself in situations when there is both
  -- aeson and aeson-benchmakrs
  cpp-options: -DHAS_BOTH_AESON_AND_BENCHMARKS
  other-modules:
    Twitter
    Twitter.Generic
    Twitter.Manual
    Twitter.Options
    Twitter.TH
    Typed.Common
    Typed.Generic
    Typed.Manual
    Typed.TH
  build-depends:
    aeson,
    aeson-benchmarks,
    base,
    base-compat,
    criterion >= 1.0,
    deepseq,
    ghc-prim,
    text,
    time

  if flag(bytestring-builder)
    build-depends: bytestring >= 0.9 && < 0.10.4,
                   bytestring-builder >= 0.10.4 && < 1
  else
    build-depends: bytestring >= 0.10.4

executable aeson-benchmark-compare-with-json
  main-is: CompareWithJSON.hs
  ghc-options: -Wall -O2 -rtsopts
  cpp-options: -DHAS_BOTH_AESON_AND_BENCHMARKS
  build-depends:
    aeson,
    aeson-benchmarks,
    base,
    base-compat,
    blaze-builder,
    bytestring,
    criterion,
    deepseq,
    json,
    text

executable aeson-benchmark-aeson-encode
  main-is: AesonEncode.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    attoparsec,
    base,
    base-compat,
    bytestring,
    deepseq,
    time

executable aeson-benchmark-aeson-parse
  main-is: AesonParse.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    attoparsec,
    base,
    base-compat,
    bytestring,
    time

executable aeson-benchmark-json-parse
  main-is: JsonParse.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    base,
    base-compat,
    deepseq,
    json,
    time

executable aeson-benchmark-dates
  main-is: Dates.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    base,
    base-compat,
    bytestring,
    criterion,
    deepseq,
    aeson-benchmarks,
    text,
    time

executable aeson-benchmark-map
  main-is: AesonMap.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson,
    aeson-benchmarks,
    base,
    base-compat,
    criterion >= 1.0,
    bytestring,
    containers,
    deepseq,
    hashable,
    tagged,
    text,
    unordered-containers

executable aeson-benchmark-foldable
  main-is: AesonFoldable.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson,
    aeson-benchmarks,
    base,
    base-compat,
    criterion >= 1.0,
    bytestring,
    containers,
    deepseq,
    hashable,
    tagged,
    text,
    unordered-containers,
    vector