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