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