File hashable.cabal of Package ghc-hashable

Cabal-version:       1.12
Name:                hashable
Version:             1.3.0.0
x-revision: 1
Synopsis:            A class for types that can be converted to a hash value
Description:         This package defines a class, 'Hashable', for types that
                     can be converted to a hash value.  This class
                     exists for the benefit of hashing-based data
                     structures.  The package provides instances for
                     basic types and a way to combine hash values.
Homepage:            http://github.com/tibbe/hashable
-- SPDX-License-Identifier : BSD-3-Clause
License:             BSD3
License-file:        LICENSE
Author:              Milan Straka <fox@ucw.cz>
                     Johan Tibell <johan.tibell@gmail.com>
Maintainer:          johan.tibell@gmail.com
bug-reports:         https://github.com/tibbe/hashable/issues
Stability:           Provisional
Category:            Data
Build-type:          Simple
tested-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

Extra-source-files:
  CHANGES.md, README.md

Flag integer-gmp
  Description: Are we using @integer-gmp@ to provide fast Integer instances?
  Default: True

Flag sse2
  Description: Do we want to assume that a target supports SSE 2?
  Default: True
  Manual: True

Flag sse41
  Description: Do we want to assume that a target supports SSE 4.1?
  Default: False
  Manual: True

Flag examples
  Description: Build example modules
  Default: False
  Manual: True

Library
  Exposed-modules:   Data.Hashable
                     Data.Hashable.Lifted
                     Data.Hashable.Generic
  Other-modules:     Data.Hashable.Class
                     Data.Hashable.Generic.Instances

  C-sources:         cbits/fnv.c

  Build-depends:     base       >= 4.5      && < 4.15
                   , bytestring >= 0.9      && < 0.11
                   , deepseq    >= 1.3      && < 1.5
                   , text       >= 0.12     && < 1.3
                   , ghc-prim

  if flag(integer-gmp)
    Build-depends:   integer-gmp >= 0.4 && < 1.1
  else
    -- this is needed for the automatic flag to be well-balanced
    Build-depends:   integer-simple

  Default-Language:  Haskell2010
  Other-Extensions:  BangPatterns
                     CPP
                     DeriveDataTypeable
                     FlexibleContexts
                     FlexibleInstances
                     GADTs
                     KindSignatures
                     MagicHash
                     MultiParamTypeClasses
                     ScopedTypeVariables
                     Trustworthy
                     TypeOperators
                     UnliftedFFITypes

  Ghc-options:       -Wall -fwarn-tabs

Test-suite tests
  Type:              exitcode-stdio-1.0
  Hs-source-dirs:    tests
  Main-is:           Main.hs
  Other-modules:     Properties Regress
  Build-depends:     base,
                     bytestring,
                     ghc-prim,
                     hashable,
                     test-framework >= 0.3.3,
                     test-framework-hunit,
                     test-framework-quickcheck2 >= 0.2.9,
                     HUnit,
                     QuickCheck >= 2.4.0.1,
                     random >= 1.0 && < 1.2,
                     text >= 0.11.0.5
  if !os(windows)
    Build-depends:   unix
    CPP-options:     -DHAVE_MMAP
    Other-modules:   Regress.Mmap
    Other-Extensions: CApiFFI

  Ghc-options:       -Wall -fno-warn-orphans
  Default-Language:  Haskell2010

benchmark benchmarks
  -- We cannot depend on the hashable library directly as that creates
  -- a dependency cycle.
  hs-source-dirs: . benchmarks

  main-is: Benchmarks.hs
  other-modules:
    Data.Hashable
    Data.Hashable.Class
    Data.Hashable.RandomSource
    Data.Hashable.SipHash
  type: exitcode-stdio-1.0

  build-depends:
    base,
    bytestring,
    criterion >= 1.0,
    ghc-prim,
    siphash,
    text

  if impl(ghc)
    Build-depends:   ghc-prim,
                     text >= 0.11.0.5
  if impl(ghc) && flag(integer-gmp)
    Build-depends:   integer-gmp >= 0.2

  if impl(ghc >= 7.2.1)
    CPP-Options:     -DGENERICS

  include-dirs:
    benchmarks/cbits

  includes:
    siphash.h

  c-sources:
    benchmarks/cbits/inthash.c
    benchmarks/cbits/siphash.c
    benchmarks/cbits/wang.c
    cbits/fnv.c

  if (arch(i386) || arch(x86_64)) && flag(sse2)
    cpp-options: -DHAVE_SSE2
    c-sources:
      benchmarks/cbits/siphash-sse2.c

    if flag(sse41)
      cpp-options: -DHAVE_SSE41
      c-sources:
        benchmarks/cbits/siphash-sse41.c

  Ghc-options:       -Wall -O2
  if impl(ghc >= 6.8)
    Ghc-options: -fwarn-tabs
  else
    c-sources:         cbits/getRandomBytes.c
    other-modules:     Data.Hashable.RandomSource
    if os(windows)
      extra-libraries: advapi32

  Default-Language:  Haskell2010

Executable hashable-examples
  if flag(examples)
    build-depends: base, hashable
  else
    buildable: False
  hs-source-dirs: examples
  main-is: Main.hs
  Default-Language:  Haskell2010

source-repository head
  type:     git
  location: https://github.com/tibbe/hashable.git