Add basics bounds checking framework
[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 EnableAssertions
42   Description: Enable assertions that check parameters to functions are reasonable.
43                These will impose a moderate performance cost on users of the library,
44                with the benefit that you get reasonable errors rather than segmentation faults!
45   Default:     True
46
47 Library
48   Extensions: CPP
49   Exposed-Modules:
50         Data.Vector.Fusion.Util
51         Data.Vector.Fusion.Stream.Size
52         Data.Vector.Fusion.Stream.Monadic
53         Data.Vector.Fusion.Stream
54
55         Data.Vector.Internal.Check
56
57         Data.Vector.Generic.Mutable
58         Data.Vector.Generic.New
59         Data.Vector.Generic
60
61         Data.Vector.Primitive.Mutable
62         Data.Vector.Primitive
63
64         Data.Vector.Storable.Internal
65         Data.Vector.Storable.Mutable
66         Data.Vector.Storable
67
68         Data.Vector.Mutable
69         Data.Vector
70   Include-Dirs:
71         include
72
73   Install-Includes:
74         vector.h
75
76   Build-Depends: base >= 2 && < 5, ghc >= 6.9, primitive
77
78 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
79 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
80 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
81 -- doesn't get inlined at the final call site and fusion fails to occur.
82   if impl(ghc<6.13)
83     Ghc-Options: -finline-if-enough-args
84   
85 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
86 -- not as essential as you think because most of the optimisation occurs when the library
87 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
88 --
89 -- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
90 -- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
91   if flag(enableassertions)
92     -- Asserts are ignored by default at -O1 or higher
93     Ghc-Options: -O2 -fno-ignore-asserts
94   else
95     Ghc-Options: -O2