Add missing import
[darcs-mirrors/vector.git] / vector.cabal
index 0a8ffc2..c9aed94 100644 (file)
@@ -1,28 +1,70 @@
 Name:           vector
-Version:        0.1
+Version:        0.2
 License:        BSD3
 License-File:   LICENSE
 Author:         Roman Leshchinskiy
 Maintainer:     Roman Leshchinskiy <rl@cse.unsw.edu.au>
+Copyright:      (c) Roman Leshchinskiy 2008
+Homepage:       http://darcs.haskell.org/vector
 Category:       Data Structures
 Synopsis:       Efficient Arrays
+Description:
+        .
+        An efficient implementation of Int-indexed arrays with a powerful
+        loop fusion framework.
+        .
+        This code is highly experimental and for the most part untested. Use
+        at your own risk!
 
 Cabal-Version:  >= 1.2
 Build-Type:     Simple
 
+Flag EnableAssertions
+  Description: Enable assertions that check parameters to functions are reasonable.
+               These will impose a moderate performance cost on users of the library,
+               with the benefit that you get reasonable errors rather than segmentation faults!
+  Default:     False
+
 Library
+  Extensions: CPP
   Exposed-Modules:
+        Data.Vector.Fusion.Stream.Size
+        Data.Vector.Fusion.Stream.Monadic
+        Data.Vector.Fusion.Stream
+
+        Data.Vector.MVector
+        Data.Vector.MVector.New
+        Data.Vector.IVector
+
         Data.Vector.Unboxed.Unbox
-        Data.Vector.Unboxed.Prim
         Data.Vector.Unboxed.Mutable
         Data.Vector.Unboxed
-        Data.Vector.Stream
 
+        Data.Vector.Mutable
+        Data.Vector
   Include-Dirs:
         include
 
   Install-Includes:
         phases.h
 
-  Build-Depends: base, array, ghc-prim
+  Build-Depends: base, array, ghc-prim,
+                 ghc >= 6.9
 
+-- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
+-- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
+-- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
+-- doesn't get inlined at the final call site and fusion fails to occur.
+  Ghc-Options: -finline-if-enough-args
+  
+-- It's probably a good idea to compile the library with -O2 as well. However, it's probably
+-- not as essential as you think because most of the optimisation occurs when the library
+-- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
+--
+-- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
+-- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
+  if flag(enableassertions)
+    -- Asserts are ignored by default at -O1 or higher
+    Ghc-Options: -O2 -fno-ignore-asserts
+  else
+    Ghc-Options: -O2
\ No newline at end of file