Nuke the EnableAssertions flag
[darcs-mirrors/vector.git] / vector.cabal
1 Name:           vector
2 Version:        0.5
3 License:        BSD3
4 License-File:   LICENSE
5 Author:         Roman Leshchinskiy <rl@cse.unsw.edu.au>
6 Maintainer:     Roman Leshchinskiy <rl@cse.unsw.edu.au>
7 Copyright:      (c) Roman Leshchinskiy 2008-2009
8 Homepage:       http://darcs.haskell.org/vector
9 Category:       Data, Data Structures
10 Synopsis:       Efficient Arrays
11 Description:
12         .
13         An efficient implementation of Int-indexed arrays with a powerful loop
14         fusion framework.
15         .
16         It is structured as follows:
17         .
18         [@Data.Vector@] boxed vectors of arbitrary types
19         .
20         [@Data.Vector.Primitive@] unboxed vectors of primitive types as
21                 defined by the @primitive@ package
22         .
23         [@Data.Vector.Storable@] unboxed vectors of 'Storable' types
24         .
25         [@Data.Vector.Generic@] generic interface to the vector types
26         .
27
28 Cabal-Version:  >= 1.2
29 Build-Type:     Simple
30
31 Extra-Source-Files:
32       tests/vector-tests.cabal
33       tests/LICENSE
34       tests/Setup.hs
35       tests/Main.hs
36       tests/Boilerplater.hs
37       tests/Utilities.hs
38       tests/Tests/Stream.hs
39       tests/Tests/Vector.hs
40
41 Flag BoundsChecks
42   Description: Enables bounds checking
43   Default: True
44
45 Flag UnsafeChecks
46   Description: Enables bounds checking in unsafe operations at the cost of a
47                significant performance penalty
48   Description: False
49
50 Flag InternalChecks
51   Description: Enables internal consistency checks at the cost of a
52                significant performance penalty
53   Default: False
54
55
56 Library
57   Extensions: CPP
58   Exposed-Modules:
59         Data.Vector.Fusion.Util
60         Data.Vector.Fusion.Stream.Size
61         Data.Vector.Fusion.Stream.Monadic
62         Data.Vector.Fusion.Stream
63
64         Data.Vector.Internal.Check
65
66         Data.Vector.Generic.Mutable
67         Data.Vector.Generic.New
68         Data.Vector.Generic
69
70         Data.Vector.Primitive.Mutable
71         Data.Vector.Primitive
72
73         Data.Vector.Storable.Internal
74         Data.Vector.Storable.Mutable
75         Data.Vector.Storable
76
77         Data.Vector.Mutable
78         Data.Vector
79   Include-Dirs:
80         include
81
82   Install-Includes:
83         vector.h
84
85   Build-Depends: base >= 2 && < 5, ghc >= 6.9, primitive
86
87 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
88 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
89 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
90 -- doesn't get inlined at the final call site and fusion fails to occur.
91   if impl(ghc<6.13)
92     Ghc-Options: -finline-if-enough-args
93   
94 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
95 -- not as essential as you think because most of the optimisation occurs when the library
96 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
97 --
98   Ghc-Options: -O2
99
100   if flag(BoundsChecks)
101     cpp-options: -DVECTOR_BOUNDS_CHECKS
102
103   if flag(UnsafeChecks)
104     cpp-options: -DVECTOR_UNSAFE_CHECKS
105
106   if flag(InternalChecks)
107     cpp-options: -DVECTOR_INTERNAL_CHECKS
108