packages feed

cryptol-2.3.0: cryptol.cabal

Name:                cryptol
Version:             2.3.0
Synopsis:            Cryptol: The Language of Cryptography
Description: Cryptol is a domain-specific language for specifying cryptographic algorithms. A Cryptol implementation of an algorithm resembles its mathematical specification more closely than an implementation in a general purpose language. For more, see <http://www.cryptol.net/>.
License:             BSD3
License-file:        LICENSE
Author:              Galois, Inc.
Maintainer:          cryptol@galois.com
Homepage:            http://www.cryptol.net/
Bug-reports:         https://github.com/GaloisInc/cryptol/issues
Copyright:           2013-2016 Galois Inc.
Category:            Language
Build-type:          Simple
Cabal-version:       >= 1.18

data-files:          *.cry Cryptol/*.cry
data-dir:            lib

source-repository head
  type:     git
  location: https://github.com/GaloisInc/cryptol.git

source-repository this
  type:     git
  location: https://github.com/GaloisInc/cryptol.git
  tag:      v2.3.0

flag static
  default: False
  description: Create a statically-linked binary

flag relocatable
  default: True
  description: Don't use the Cabal-provided data directory for looking up Cryptol libraries. This is useful when the data directory can't be known ahead of time, like for a relocatable distribution.

flag server
  default: False
  description: Build with the ZeroMQ/JSON cryptol-server executable

library
  Default-language:
    Haskell98
  Build-depends:       base              >= 4.7 && < 5,
                       base-compat       >= 0.6,
                       bytestring        >= 0.10,
                       array             >= 0.4,
                       async             >= 2.0,
                       containers        >= 0.5,
                       deepseq           >= 1.3,
                       deepseq-generics  >= 0.1 && < 0.2,
                       directory         >= 1.2,
                       filepath          >= 1.3,
                       gitrev            >= 1.0,
                       generic-trie      >= 0.3.0.1,
                       GraphSCC          >= 1.0.4,
                       heredoc           >= 0.2,
                       monad-control     >= 1.0,
                       monadLib          >= 3.7.2,
                       old-time          >= 1.1,
                       presburger        >= 1.3,
                       pretty            >= 1.1,
                       process           >= 1.2,
                       QuickCheck        >= 2.7,
                       random            >= 1.0.1,
                       sbv               >= 5.7,
                       smtLib            >= 1.0.7,
                       simple-smt        >= 0.6.0,
                       syb               >= 0.4,
                       text              >= 1.1,
                       template-haskell,
                       tf-random         >= 0.5,
                       transformers      >= 0.3,
                       transformers-base >= 0.4,
                       utf8-string       >= 0.3

  Build-tools:         alex, happy
  hs-source-dirs:      src

  Exposed-modules:     Cryptol.Prims.Syntax,
                       Cryptol.Prims.Eval,

                       Cryptol.Parser,
                       Cryptol.Parser.Lexer,
                       Cryptol.Parser.AST,
                       Cryptol.Parser.Position,
                       Cryptol.Parser.Names,
                       Cryptol.Parser.Name,
                       Cryptol.Parser.NoPat,
                       Cryptol.Parser.NoInclude,
                       Cryptol.Parser.Utils,
                       Cryptol.Parser.Unlit,

                       Cryptol.Utils.Ident,
                       Cryptol.Utils.PP,
                       Cryptol.Utils.Panic,
                       Cryptol.Utils.Debug,
                       Cryptol.Utils.Misc,
                       Cryptol.Version,

                       Cryptol.ModuleSystem,
                       Cryptol.ModuleSystem.Base,
                       Cryptol.ModuleSystem.Env,
                       Cryptol.ModuleSystem.Interface,
                       Cryptol.ModuleSystem.Monad,
                       Cryptol.ModuleSystem.Name,
                       Cryptol.ModuleSystem.NamingEnv,
                       Cryptol.ModuleSystem.Renamer,

                       Cryptol.TypeCheck,
                       Cryptol.TypeCheck.AST,
                       Cryptol.TypeCheck.Monad,
                       Cryptol.TypeCheck.Infer,
                       Cryptol.TypeCheck.InferTypes,
                       Cryptol.TypeCheck.Kind,
                       Cryptol.TypeCheck.Subst,
                       Cryptol.TypeCheck.Instantiate,
                       Cryptol.TypeCheck.Unify,
                       Cryptol.TypeCheck.Depends,
                       Cryptol.TypeCheck.PP,
                       Cryptol.TypeCheck.Solve,
                       Cryptol.TypeCheck.TypeMap,
                       Cryptol.TypeCheck.TypeOf,
                       Cryptol.TypeCheck.Sanity,

                       Cryptol.TypeCheck.Solver.InfNat,
                       Cryptol.TypeCheck.Solver.Class,
                       Cryptol.TypeCheck.Solver.Selector,
                       Cryptol.TypeCheck.Solver.Utils,
                       Cryptol.TypeCheck.Solver.Simplify,

                       Cryptol.TypeCheck.Solver.CrySAT,
                       Cryptol.TypeCheck.Solver.Numeric.AST,
                       Cryptol.TypeCheck.Solver.Numeric.ImportExport,
                       Cryptol.TypeCheck.Solver.Numeric.Defined,
                       Cryptol.TypeCheck.Solver.Numeric.Fin,
                       Cryptol.TypeCheck.Solver.Numeric.Interval,
                       Cryptol.TypeCheck.Solver.Numeric.Simplify,
                       Cryptol.TypeCheck.Solver.Numeric.Simplify1,
                       Cryptol.TypeCheck.Solver.Numeric.SimplifyExpr,
                       Cryptol.TypeCheck.Solver.Numeric.NonLin,
                       Cryptol.TypeCheck.Solver.Numeric.SMT,

                       Cryptol.Transform.MonoValues,
                       Cryptol.Transform.Specialize,

                       Cryptol.Eval,
                       Cryptol.Eval.Arch,
                       Cryptol.Eval.Env,
                       Cryptol.Eval.Error,
                       Cryptol.Eval.Type,
                       Cryptol.Eval.Value,

                       Cryptol.Testing.Concrete,
                       Cryptol.Testing.Random,

                       Cryptol.Symbolic,
                       Cryptol.Symbolic.Prims,
                       Cryptol.Symbolic.Value,

                       Cryptol.REPL.Command,
                       Cryptol.REPL.Monad,
                       Cryptol.REPL.Trie

  Other-modules:       Cryptol.Parser.LexerUtils,
                       Cryptol.Parser.ParserUtils,
                       Cryptol.Prelude,
                       Paths_cryptol,
                       GitRev

  GHC-options:         -Wall -O2 -fsimpl-tick-factor=140
  -- the `fsimpl-tick-factor` is needed to finish optimizing the
  -- generic trie.
  ghc-prof-options:    -fprof-auto -prof

  if flag(relocatable)
      cpp-options: -DRELOCATABLE

executable cryptol
  Default-language:
    Haskell98
  Main-is:             Main.hs
  hs-source-dirs:      cryptol
  Other-modules:       OptParser,
                       REPL.Haskeline,
                       REPL.Logo,
                       Paths_cryptol
  build-depends:       ansi-terminal
                     , base
                     , base-compat
                     , containers
                     , cryptol
                     , deepseq
                     , directory
                     , filepath
                     , haskeline
                     , monadLib
                     , monad-control
                     , process
                     , random
                     , sbv
                     , tf-random
                     , transformers
  GHC-options:         -Wall -O2 -threaded -rtsopts -with-rtsopts=-N
  ghc-prof-options:    -auto-all -prof -rtsopts

  if os(linux) && flag(static)
      ld-options:      -static -pthread

executable cryptol-server
  main-is:             Main.hs
  hs-source-dirs:      cryptol-server
  other-modules:       Cryptol.Aeson
  default-language:    Haskell2010
  default-extensions:  OverloadedStrings
  GHC-options:         -Wall -O2 -threaded -rtsopts -with-rtsopts=-N
  ghc-prof-options:    -auto-all -prof -rtsopts
  if os(linux) && flag(static)
      ld-options:      -static -pthread
  if flag(server)
     build-depends: aeson >= 0.10
                  , aeson-pretty >= 0.7
                  , base
                  , base-compat
                  , bytestring >= 0.10
                  , containers
                  , cryptol
                  , filepath
                  , monad-control
                  , optparse-applicative >= 0.12
                  , text
                  , transformers
                  , unix
                  , unordered-containers >= 0.2
                  , zeromq4-haskell >= 0.6
  else
      buildable: False

benchmark cryptol-bench
  type:                exitcode-stdio-1.0
  main-is:             Main.hs
  hs-source-dirs:      bench
  default-language:    Haskell2010
  GHC-options:         -Wall -O2 -threaded -rtsopts -with-rtsopts=-N
  ghc-prof-options:    -auto-all -prof -rtsopts
  if os(linux) && flag(static)
      ld-options:      -static -pthread
  build-depends:       base
                     , criterion
                     , cryptol
                     , deepseq
                     , text