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