summaryrefslogtreecommitdiff
path: root/vector-algorithms.cabal
blob: 75d3617c634a38350b6f94442d1ae8ea7e430e9a (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
name:              vector-algorithms
version:           0.9.0.1
x-revision: 2
license:           BSD3
license-file:      LICENSE
author:            Dan Doel
maintainer:        Dan Doel <dan.doel@gmail.com>
                   Erik de Castro Lopo <erikd@mega-nerd.com>
copyright:         (c) 2008,2009,2010,2011,2012,2013,2014,2015 Dan Doel
                   (c) 2015 Tim Baumann
homepage:          https://github.com/erikd/vector-algorithms/
category:          Data
synopsis:          Efficient algorithms for vector arrays
description:       Efficient algorithms for sorting vector arrays. At some stage
                   other vector algorithms may be added.
build-type:        Simple
cabal-version:     >= 1.10
extra-source-files: CHANGELOG.md


flag BoundsChecks
  description: Enable bounds checking
  default: True

flag UnsafeChecks
  description: Enable bounds checking in unsafe operations at the cost of a
               significant performance penalty.
  default: False

flag InternalChecks
  description: Enable internal consistency checks at the cost of a
               significant performance penalty.
  default: False

flag bench
  description: Build a benchmarking program to test vector-algorithms
               performance
  default: True

flag properties
  description: Enable the quickcheck tests
  default: True

-- flag dump-simpl
--   description: Dumps the simplified core during compilation
--   default: False

flag llvm
  description: Build using llvm
  default: False

source-repository head
  type:     git
  location: https://github.com/erikd/vector-algorithms/

library
  hs-source-dirs: src
  default-language: Haskell2010

  build-depends: base >= 4.5 && < 5,
                 bitvec >= 1.0 && < 1.2,
                 vector >= 0.6 && < 0.14,
                 primitive >=0.6.2.0 && <0.9,
                 bytestring >= 0.9 && < 1.0

  if ! impl (ghc >= 7.8)
    build-depends: tagged >= 0.4 && < 0.9

  exposed-modules:
    Data.Vector.Algorithms
    Data.Vector.Algorithms.Optimal
    Data.Vector.Algorithms.Insertion
    Data.Vector.Algorithms.Intro
    Data.Vector.Algorithms.Merge
    Data.Vector.Algorithms.Radix
    Data.Vector.Algorithms.Search
    Data.Vector.Algorithms.Heap
    Data.Vector.Algorithms.AmericanFlag
    Data.Vector.Algorithms.Tim

  other-modules:
    Data.Vector.Algorithms.Common

  ghc-options:
    -funbox-strict-fields

  -- Cabal/Hackage complains about these
  -- if flag(dump-simpl)
  --   ghc-options: -ddump-simpl -ddump-to-file

  if flag(llvm)
    ghc-options: -fllvm

  include-dirs:
    include

  install-includes:
    vector.h

  if flag(BoundsChecks)
    cpp-options: -DVECTOR_BOUNDS_CHECKS

  if flag(UnsafeChecks)
    cpp-options: -DVECTOR_UNSAFE_CHECKS

  if flag(InternalChecks)
    cpp-options: -DVECTOR_INTERNAL_CHECKS

benchmark simple-bench
  hs-source-dirs: bench/simple
  type: exitcode-stdio-1.0
  default-language: Haskell2010

  if !flag(bench)
    buildable: False

  main-is: Main.hs

  other-modules:
    Blocks

  build-depends: base, mwc-random, vector, vector-algorithms
  ghc-options: -Wall

  -- Cabal/Hackage complains about these
  -- if flag(dump-simpl)
  --   ghc-options: -ddump-simpl -ddump-to-file

  if flag(llvm)
    ghc-options: -fllvm

test-suite properties
  hs-source-dirs: tests/properties
  type: exitcode-stdio-1.0
  main-is: Tests.hs
  default-language: Haskell2010

  other-modules:
    Optimal
    Properties
    Util

  if !flag(properties)
    buildable: False
  else
    build-depends:
      base,
      bytestring,
      containers,
      QuickCheck > 2.9 && < 2.15,
      vector,
      vector-algorithms

  if flag(llvm)
    ghc-options: -fllvm