D.V.Unboxed.Mutable -> D.V.Unboxed.Mutable.ST
[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.ST
39         Data.Vector.Unboxed
40
41         Data.Vector.Mutable.ST
42         Data.Vector.Mutable.IO
43         Data.Vector
44   Include-Dirs:
45         include
46
47   Install-Includes:
48         phases.h
49
50   Build-Depends: base, array, ghc-prim,
51                  ghc >= 6.9
52
53 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
54 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
55 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
56 -- doesn't get inlined at the final call site and fusion fails to occur.
57   Ghc-Options: -finline-if-enough-args
58   
59 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
60 -- not as essential as you think because most of the optimisation occurs when the library
61 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
62 --
63 -- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
64 -- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
65   if flag(enableassertions)
66     -- Asserts are ignored by default at -O1 or higher
67     Ghc-Options: -O2 -fno-ignore-asserts
68   else
69     Ghc-Options: -O2