Remove the caveat about the code being untested
[darcs-mirrors/vector.git] / vector.cabal
1 Name:           vector
2 Version:        0.2
3 License:        BSD3
4 License-File:   LICENSE
5 Author:         Roman Leshchinskiy
6 Maintainer:     Roman Leshchinskiy <rl@cse.unsw.edu.au>
7 Copyright:      (c) Roman Leshchinskiy 2008
8 Homepage:       http://darcs.haskell.org/vector
9 Category:       Data Structures
10 Synopsis:       Efficient Arrays
11 Description:
12         .
13         An efficient but highly experimental implementation of Int-indexed
14         arrays with a powerful loop fusion framework.
15         .
16
17 Cabal-Version:  >= 1.2
18 Build-Type:     Simple
19
20 Flag EnableAssertions
21   Description: Enable assertions that check parameters to functions are reasonable.
22                These will impose a moderate performance cost on users of the library,
23                with the benefit that you get reasonable errors rather than segmentation faults!
24   Default:     False
25
26 Library
27   Extensions: CPP
28   Exposed-Modules:
29         Data.Vector.Fusion.Stream.Size
30         Data.Vector.Fusion.Stream.Monadic
31         Data.Vector.Fusion.Stream
32
33         Data.Vector.MVector
34         Data.Vector.MVector.New
35         Data.Vector.IVector
36
37         Data.Vector.Unboxed.Unbox
38         Data.Vector.Unboxed.Mutable
39         Data.Vector.Unboxed
40
41         Data.Vector.Mutable
42         Data.Vector
43   Include-Dirs:
44         include
45
46   Install-Includes:
47         phases.h
48
49   Build-Depends: base, array, ghc-prim,
50                  ghc >= 6.9
51
52 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
53 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
54 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
55 -- doesn't get inlined at the final call site and fusion fails to occur.
56   Ghc-Options: -finline-if-enough-args
57   
58 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
59 -- not as essential as you think because most of the optimisation occurs when the library
60 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
61 --
62 -- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
63 -- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
64   if flag(enableassertions)
65     -- Asserts are ignored by default at -O1 or higher
66     Ghc-Options: -O2 -fno-ignore-asserts
67   else
68     Ghc-Options: -O2