Storable-based vectors
[darcs-mirrors/vector.git] / vector.cabal
1 Name:           vector
2 Version:        0.3.1
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 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 Extra-Source-Files:
21       tests/vector-tests.cabal
22       tests/LICENSE
23       tests/Setup.hs
24       tests/Main.hs
25       tests/Boilerplater.hs
26       tests/Properties.hs
27       tests/Utilities.hs
28
29 Flag EnableAssertions
30   Description: Enable assertions that check parameters to functions are reasonable.
31                These will impose a moderate performance cost on users of the library,
32                with the benefit that you get reasonable errors rather than segmentation faults!
33   Default:     False
34
35 Library
36   Extensions: CPP
37   Exposed-Modules:
38         Data.Vector.Fusion.Util
39         Data.Vector.Fusion.Stream.Size
40         Data.Vector.Fusion.Stream.Monadic
41         Data.Vector.Fusion.Stream
42
43         Data.Vector.MVector
44         Data.Vector.MVector.New
45         Data.Vector.IVector
46
47         Data.Vector.Unboxed.Unbox
48         Data.Vector.Unboxed.Mutable.ST
49         Data.Vector.Unboxed.Mutable.IO
50         Data.Vector.Unboxed
51
52         Data.Vector.Storable.Internal
53         Data.Vector.Storable.Mutable
54         Data.Vector.Storable
55
56         Data.Vector.Mutable.ST
57         Data.Vector.Mutable.IO
58         Data.Vector
59   Include-Dirs:
60         include
61
62   Install-Includes:
63         phases.h
64
65   Build-Depends: base >= 2 && < 4, array, ghc-prim,
66                  ghc >= 6.9
67
68 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
69 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
70 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
71 -- doesn't get inlined at the final call site and fusion fails to occur.
72   Ghc-Options: -finline-if-enough-args
73   
74 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
75 -- not as essential as you think because most of the optimisation occurs when the library
76 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
77 --
78 -- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
79 -- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
80   if flag(enableassertions)
81     -- Asserts are ignored by default at -O1 or higher
82     Ghc-Options: -O2 -fno-ignore-asserts
83   else
84     Ghc-Options: -O2