name:                aeson-benchmarks
version:             0
build-type:          Simple

cabal-version:       >=1.8

flag old-locale
  description: If false then depend on time >= 1.5.
               .
               If true then depend on time < 1.5 together with old-locale.
  default: False

library
  hs-source-dirs: .. .

  exposed-modules:
    Data.Aeson
    Data.Aeson.Encode
    Data.Aeson.Encode.Builder
    Data.Aeson.Encode.Functions
    Data.Aeson.Functions
    Data.Aeson.Internal
    Data.Aeson.Internal.Time
    Data.Aeson.Parser
    Data.Aeson.Parser.Internal
    Data.Aeson.Parser.Time
    Data.Aeson.TH
    Data.Aeson.Types
    Data.Aeson.Types.Class
    Data.Aeson.Types.Generic
    Data.Aeson.Types.Instances
    Data.Aeson.Types.Internal

  build-depends:
    attoparsec >= 0.13.0.1,
    base == 4.*,
    bytestring >= 0.10.4.0,
    containers,
    deepseq,
    dlist >= 0.2,
    ghc-prim >= 0.2,
    hashable >= 1.1.2.0,
    mtl,
    scientific >= 0.3.1 && < 0.4,
    syb,
    template-haskell >= 2.4,
    text >= 1.1.1.0,
    time,
    transformers,
    unordered-containers >= 0.2.3.0,
    vector >= 0.7.1

  if flag(old-locale)
    build-depends: time < 1.5, old-locale
  else
    build-depends: time >= 1.5

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

executable aeson-benchmark-compare
  main-is: Compare.hs
  hs-source-dirs: ../examples .
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    base,
    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,
    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
  build-depends:
    aeson-benchmarks,
    base,
    bytestring,
    criterion >= 1.0,
    deepseq,
    ghc-prim,
    text,
    time

executable aeson-benchmark-compare-with-json
  main-is: CompareWithJSON.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    aeson-benchmarks,
    base,
    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,
    bytestring,
    deepseq,
    time

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

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

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