packages feed

lol-cpp-0.2.0.0: lol-cpp.cabal

cabal-version: 1.12

-- This file has been generated from package.yaml by hpack version 0.31.2.
--
-- see: https://github.com/sol/hpack
--
-- hash: 41473b16ac120bfa8af8737be73585f746c046280949af8d0bd13fcb50bf8491

name:           lol-cpp
version:        0.2.0.0
synopsis:       A fast C++ backend for <https://hackage.haskell.org/package/lol lol>.
description:    Λ ⚬ λ (Lol) is a general-purpose library for ring-based lattice cryptography. This package provides a C++ implementation of Lol's Tensor interface.
category:       Crypto
stability:      experimental
homepage:       https://github.com/cpeikert/lol#readme
bug-reports:    https://github.com/cpeikert/lol/issues
author:         Eric Crockett <ecrockett0@gmail.com>,
                Chris Peikert <cpeikert@alum.mit.edu>
maintainer:     Eric Crockett <ecrockett@gmail.com>,
                Chad Sharp <cmlsharp@umich.edu>
copyright:      Eric Crockett,
                Chris Peikert
license:        GPL-3
license-file:   LICENSE
build-type:     Simple
extra-source-files:
    README
    CHANGES.md
    Crypto/Lol/Cyclotomic/Tensor/CPP/common.h
    Crypto/Lol/Cyclotomic/Tensor/CPP/tensor.h
    Crypto/Lol/Cyclotomic/Tensor/CPP/types.h
    Crypto/Lol/Cyclotomic/Tensor/CPP/common.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/crt.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/g.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/l.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/mul.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/norm.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/random.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/rrq.cpp
    Crypto/Lol/Cyclotomic/Tensor/CPP/zq.cpp

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

flag llvm
  description: Compile via LLVM. This produces much better object code, but you need to have the LLVM compiler installed.
  manual: False
  default: False

flag opt
  description: Turn on library optimizations
  manual: False
  default: True

flag with-apps
  description: When this flag is enabled, lol-apps tests and benchmarks are buildable.
  manual: False
  default: True

flag with-execs
  description: When this flag and `with-apps` are both enabled, the lol-apps executables are buildable
  manual: False
  default: False

library
  exposed-modules:
      Crypto.Lol.Cyclotomic.Tensor.CPP
  other-modules:
      Crypto.Lol.Cyclotomic.Tensor.CPP.Backend
      Crypto.Lol.Cyclotomic.Tensor.CPP.Extension
      Crypto.Lol.Cyclotomic.Tensor.CPP.Instances
  cc-options: -std=c++11 -O3
  include-dirs:
      Crypto/Lol/Cyclotomic/Tensor/CPP
  c-sources:
      Crypto/Lol/Cyclotomic/Tensor/CPP/common.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/crt.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/g.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/l.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/mul.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/norm.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/random.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/rrq.cpp
      Crypto/Lol/Cyclotomic/Tensor/CPP/zq.cpp
  build-depends:
      MonadRandom >=0.5.1 && <0.6
    , base >=4.12.0 && <4.13
    , constraints >=0.10 && <0.11
    , deepseq >=1.4.4 && <1.5
    , lol >=0.7.0.0 && <0.8
    , mtl >=2.2.2 && <2.3
    , numeric-prelude >=0.4.3 && <0.5
    , reflection >=2.1.5 && <2.2
    , vector >=0.12.0 && <0.13
  if flag(llvm)
    ghc-options: -fllvm -optlo-O3 -pgmlo opt
  default-language: Haskell2010

test-suite test-lol-apps-cpp
  type: exitcode-stdio-1.0
  main-is: TestAppsCPPMain.hs
  other-modules:
      TestLolCPPMain
      Paths_lol_cpp
  hs-source-dirs:
      tests
  ghc-options: -main-is TestAppsCPPMain
  build-depends:
      base
    , lol >=0.7.0.0 && <0.8
    , lol-apps >=0.3 && <0.4
    , lol-cpp
    , test-framework
  if flag(llvm)
    ghc-options: -fllvm -optlo-O3 -pgmlo opt
  if !flag(with-apps)
    buildable: False
  default-language: Haskell2010

benchmark bench-lol-apps-cpp
  type: exitcode-stdio-1.0
  main-is: BenchAppsCPPMain.hs
  hs-source-dirs:
      benchmarks
  ghc-options: -main-is BenchAppsCPPMain
  build-depends:
      DRBG
    , MonadRandom
    , base
    , lol >=0.7.0.0 && <0.8
    , lol-apps >=0.3 && <0.4
    , lol-cpp
  if flag(llvm)
    ghc-options: -fllvm -optlo-O3 -pgmlo opt
  if !flag(with-apps)
    buildable: False
  default-language: Haskell2010

benchmark bench-lol-cpp
  type: exitcode-stdio-1.0
  main-is: BenchLolCPPMain.hs
  hs-source-dirs:
      benchmarks
  ghc-options: -main-is BenchLolCPPMain
  build-depends:
      DRBG
    , base
    , lol >=0.7.0.0 && <0.8
    , lol-cpp
  if flag(llvm)
    ghc-options: -fllvm -optlo-O3 -pgmlo opt
  default-language: Haskell2010