Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
vector.cabal 3.09 KiB
Name:           vector
Version:        0.4.1
License:        BSD3
License-File:   LICENSE
Author:         Roman Leshchinskiy <rl@cse.unsw.edu.au>
Maintainer:     Roman Leshchinskiy <rl@cse.unsw.edu.au>
Copyright:      (c) Roman Leshchinskiy 2008-2009
Homepage:       http://darcs.haskell.org/vector
Category:       Data, Data Structures
Synopsis:       Efficient Arrays
Description:
        .
        An efficient implementation of Int-indexed arrays with a powerful loop
        fusion framework.
        .
        It is structured as follows:
        .
        [@Data.Vector@] boxed vectors of arbitrary types
        .
        [@Data.Vector.Primitive@] unboxed vectors of primitive types as
                defined by the @primitive@ package
        .
        [@Data.Vector.Storable@] unboxed vectors of 'Storable' types
        .
        [@Data.Vector.Generic@] generic interface to the vector types
        .

Cabal-Version:  >= 1.2
Build-Type:     Simple

Extra-Source-Files:
      tests/vector-tests.cabal
      tests/LICENSE
      tests/Setup.hs
      tests/Main.hs
      tests/Boilerplater.hs
      tests/Utilities.hs
      tests/Tests/Stream.hs
      tests/Tests/Vector.hs

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:     True

Library
  Extensions: CPP
  Exposed-Modules:
        Data.Vector.Fusion.Util
        Data.Vector.Fusion.Stream.Size
        Data.Vector.Fusion.Stream.Monadic
        Data.Vector.Fusion.Stream

        Data.Vector.Generic.Mutable
        Data.Vector.Generic.New
        Data.Vector.Generic

        Data.Vector.Primitive.Mutable
        Data.Vector.Primitive

        Data.Vector.Storable.Internal
        Data.Vector.Storable.Mutable
        Data.Vector.Storable

        Data.Vector.Mutable
        Data.Vector
  Include-Dirs:
        include
  Install-Includes:
        phases.h

  Build-Depends: base >= 2 && < 5, ghc >= 6.9, primitive

-- -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.
  if impl(ghc<6.13)
    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