packages feed

lol-0.6.0.0: lol.cabal

name:                lol
-- The package version.  See the Haskell package versioning policy (PVP)
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP summary:      +-+------- breaking API changes
--                   | | +----- non-breaking API additions
--                   | | | +--- code changes with no API change
version:             0.6.0.0
synopsis:            A library for lattice cryptography.
homepage:            https://github.com/cpeikert/Lol
Bug-Reports:         https://github.com/cpeikert/Lol/issues
license:             GPL-2
license-file:        LICENSE
author:              Eric Crockett <ecrockett0@gmail.com>, Chris Peikert <cpeikert@alum.mit.edu>
maintainer:          Eric Crockett <ecrockett0@gmail.com>
copyright:           Eric Crockett, Chris Peikert
category:            Crypto
stability:           experimental
build-type:          Simple
extra-source-files:  README, CHANGES.md, Lol.proto, RLWE.proto
cabal-version:       >= 1.10
description:
    Λ ∘ λ (Lol) is a general-purpose library for ring-based lattice cryptography.
    For a detailed description of interfaces and functionality, see
    <https://eprint.iacr.org/2015/1134 Λ ∘ λ: Functional Lattice Cryptography>.
    Backends for the library include <https://hackage.haskell.org/package/lol-cpp lol-cpp>
    and <https://hackage.haskell.org/package/lol-repa lol-repa>.
    For example cryptographic applications, see <https://hackage.haskell.org/package/lol-apps lol-apps>.

source-repository head
  type: git
  location: https://github.com/cpeikert/Lol

-- For information on compiling C with cabal: http://blog.ezyang.com/2010/06/setting-up-cabal-the-ffi-and-c2hs/

Flag llvm
  Description:  Compile via LLVM. This produces much better object code,
                but you need to have the LLVM compiler installed.
  -- If you enable this and get errors like "Error: can't resolve `.rodata' {.rodata section}"
  -- then GHC doesn't like your version of LLVM!
  Default:      False

Flag opt
  Description: Turn on library optimizations
  Default:     True

library
  default-language:   Haskell2010
  ghc-options: -fwarn-dodgy-imports

  if flag(llvm)
    ghc-options: -fllvm -optlo-O3

  -- ghc optimizations
  if flag(opt)
    -- makes lift much faster!
    ghc-options: -funfolding-use-threshold1000
  exposed-modules:
    Crypto.Lol
    Crypto.Lol.Types
    Crypto.Lol.Factored
    Crypto.Lol.Reflects
    Crypto.Lol.CRTrans
    Crypto.Lol.Gadget
    Crypto.Lol.Prelude

    Crypto.Lol.Cyclotomic.Cyc
    Crypto.Lol.Cyclotomic.UCyc
    Crypto.Lol.Cyclotomic.RescaleCyc
    Crypto.Lol.Cyclotomic.Linear

    Crypto.Lol.RLWE.Continuous
    Crypto.Lol.RLWE.Discrete
    Crypto.Lol.RLWE.RLWR

    Crypto.Lol.Cyclotomic.Tensor
    Crypto.Lol.GaussRandom
    Crypto.Lol.Types.Unsafe.Complex
    Crypto.Lol.Types.FiniteField
    Crypto.Lol.Types.IrreducibleChar2
    Crypto.Lol.Types.IZipVector
    Crypto.Lol.Types.Proto
    Crypto.Lol.Types.Random
    Crypto.Lol.Types.Unsafe.RRq
    Crypto.Lol.Types.ZmStar
    Crypto.Lol.Types.ZPP
    Crypto.Lol.Types.Unsafe.ZqBasic

    Crypto.Proto.Lol
    Crypto.Proto.Lol.LinearRq
    Crypto.Proto.Lol.R
    Crypto.Proto.Lol.Rq1
    Crypto.Proto.Lol.RqProduct
    Crypto.Proto.Lol.Kq1
    Crypto.Proto.Lol.KqProduct
    Crypto.Proto.Lol.TypeRep
    Crypto.Proto.RLWE
    Crypto.Proto.RLWE.SampleCont
    Crypto.Proto.RLWE.SampleDisc
    Crypto.Proto.RLWE.SampleRLWR
    Crypto.Proto.RLWE.SampleCont1
    Crypto.Proto.RLWE.SampleDisc1
    Crypto.Proto.RLWE.SampleRLWR1

    Crypto.Lol.Utils.GenArgs
    Crypto.Lol.Utils.ShowType

  other-modules:
    Crypto.Lol.Cyclotomic.CRTSentinel
    Crypto.Lol.FactoredDefs
    Crypto.Lol.Types.Numeric
    Crypto.Lol.PosBin
    Crypto.Lol.PosBinDefs

  build-depends:
    arithmoi >= 0.4.1.3,
    base >= 4.9 && < 5,
    bytestring,
    constraints,
    containers >= 0.5.6.2,
    crypto-api,
    data-default >= 0.3.0,
    deepseq >= 1.4.1.1,
    directory,
    monadcryptorandom,
    MonadRandom >= 0.2,
    mtl >= 2.2.1,
    numeric-prelude >= 0.4.2,
    protocol-buffers,
    protocol-buffers-descriptor,
    random >= 1.1,
    reflection >= 1.5.1,
    singletons >= 1.1.2.1,
    tagged-transformer >= 0.7,
    template-haskell >=  2.2.0.0,
    vector >=0.11,
    vector-th-unbox >= 0.2.1.0