Bump version number
[darcs-mirrors/vector.git] / vector.cabal
1 Name:           vector
2 Version:        0.5
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, Data Structures
10 Synopsis:       Efficient Arrays
11 Description:
12         .
13         An efficient implementation of Int-indexed arrays with a powerful loop
14         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/Utilities.hs
38       tests/Tests/Stream.hs
39       tests/Tests/Vector.hs
40
41 Flag EnableAssertions
42   Description: Enable assertions that check parameters to functions are reasonable.
43                These will impose a moderate performance cost on users of the library,
44                with the benefit that you get reasonable errors rather than segmentation faults!
45   Default:     False
46
47 Library
48   Extensions: CPP
49   Exposed-Modules:
50         Data.Vector.Fusion.Util
51         Data.Vector.Fusion.Stream.Size
52         Data.Vector.Fusion.Stream.Monadic
53         Data.Vector.Fusion.Stream
54
55         Data.Vector.Generic.Mutable
56         Data.Vector.Generic.New
57         Data.Vector.Generic
58
59         Data.Vector.Primitive.Mutable
60         Data.Vector.Primitive
61
62         Data.Vector.Storable.Internal
63         Data.Vector.Storable.Mutable
64         Data.Vector.Storable
65
66         Data.Vector.Mutable
67         Data.Vector
68   Include-Dirs:
69         include
70
71   Install-Includes:
72         phases.h
73
74   Build-Depends: base >= 2 && < 5, ghc >= 6.9, primitive
75
76 -- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
77 -- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
78 -- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
79 -- doesn't get inlined at the final call site and fusion fails to occur.
80   if impl(ghc<6.13)
81     Ghc-Options: -finline-if-enough-args
82   
83 -- It's probably a good idea to compile the library with -O2 as well. However, it's probably
84 -- not as essential as you think because most of the optimisation occurs when the library
85 -- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
86 --
87 -- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
88 -- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
89   if flag(enableassertions)
90     -- Asserts are ignored by default at -O1 or higher
91     Ghc-Options: -O2 -fno-ignore-asserts
92   else
93     Ghc-Options: -O2