packages feed

hashable-1.2.0.0: hashable.cabal

Name:                hashable
Version:             1.2.0.0
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
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
Cabal-version:       >=1.8
-- tests/Properties.hs shouldn't have to go here, but the source files
-- for the test-suite stanzas don't get picked up by `cabal sdist`.
Extra-source-files:
  CHANGES, README.md, tests/Properties.hs, benchmarks/Benchmarks.hs,
  cbits/siphash.h

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

Flag fixed-salt
  Description: Do we use a single fixed salt every time the program runs?
  Default: False

Library
  Exposed-modules:   Data.Hashable
  Other-modules:     Data.Hashable.Class
                     Data.Hashable.RandomSource
                     Data.Hashable.SipHash
  Build-depends:     base >= 4.0 && < 5.0,
                     bytestring >= 0.9
  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
    Other-modules:   Data.Hashable.Generic

  C-sources:         cbits/getRandomBytes.c
                     cbits/inthash.c
                     cbits/siphash.c
  if arch(i386)
    C-sources:       cbits/siphash-sse2.c
                     cbits/siphash-sse41.c
    CC-options:      -msse2 -msse4.1

  Ghc-options:       -Wall
  if impl(ghc >= 6.8)
    Ghc-options: -fwarn-tabs
  if flag(fixed-salt)
    Cpp-options: -DFIXED_SALT
  if os(windows)
    extra-libraries: advapi32

Test-suite tests
  Type:              exitcode-stdio-1.0
  Hs-source-dirs:    tests
  Main-is:           Properties.hs
  Build-depends:     base >= 4.0 && < 5.0,
                     bytestring,
                     ghc-prim,
                     hashable,
                     test-framework >= 0.3.3,
                     test-framework-quickcheck2 >= 0.2.9,
                     QuickCheck >= 2.4.0.1,
                     random == 1.0.*,
                     text >= 0.11.0.5

  Ghc-options:       -Wall -fno-warn-orphans
  if impl(ghc >= 7.2.1)
    CPP-Options:     -DGENERICS

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,
    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

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

  if arch(i386) || arch(x86_64)
    cpp-options: -DHAVE_SSE
    cc-options: -msse2 -msse4.1
    c-sources:
      cbits/siphash-sse2.c
      cbits/siphash-sse41.c

  Ghc-options:       -Wall -O2
  if impl(ghc >= 6.8)
    Ghc-options: -fwarn-tabs
  if flag(fixed-salt)
    Cpp-options: -DFIXED_SALT
  if os(windows)
    extra-libraries: advapi32

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