packages feed

cryptol-2.2.5: cryptol.cabal

Name:                cryptol
Version:             2.2.5
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-files:       LICENSE, LICENSE.rtf
Author:              Galois, Inc.
Maintainer:          cryptol@galois.com
Homepage:            http://www.cryptol.net/
Bug-reports:         https://github.com/GaloisInc/cryptol/issues
Copyright:           2013-2015 Galois Inc.
Category:            Language
Build-type:          Simple
Cabal-version:       >= 1.20

data-files:          *.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.2.5

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 self-contained
  default: True
  description: Compile the text of the Cryptol Prelude into the library

library
  Default-language:
    Haskell98
  Build-depends:       base            >= 4.6 && < 5,
                       array           >= 0.4,
                       async           >= 2.0,
                       containers      >= 0.5,
                       deepseq         >= 1.3,
                       directory       >= 1.2,
                       filepath        >= 1.3,
                       gitrev          >= 1.0,
                       GraphSCC        >= 1.0.4,
                       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             (>= 4.3 && < 5.0) || (>= 5.1 && < 5.2),
                       smtLib          >= 1.0.7,
                       syb             >= 0.4,
                       text            >= 1.1,
                       template-haskell,
                       tf-random       >= 0.5,
                       transformers    >= 0.3,
                       utf8-string     >= 0.3

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

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

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

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

                       Cryptol.ModuleSystem,
                       Cryptol.ModuleSystem.Base,
                       Cryptol.ModuleSystem.Env,
                       Cryptol.ModuleSystem.Interface,
                       Cryptol.ModuleSystem.Monad,
                       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.Defaulting,

                       Cryptol.TypeCheck.Solver.Eval,
                       Cryptol.TypeCheck.Solver.FinOrd,
                       Cryptol.TypeCheck.Solver.InfNat,
                       Cryptol.TypeCheck.Solver.Interval,
                       Cryptol.TypeCheck.Solver.Smtlib,
                       Cryptol.TypeCheck.Solver.Numeric,
                       Cryptol.TypeCheck.Solver.Class,
                       Cryptol.TypeCheck.Solver.Selector,
                       Cryptol.TypeCheck.Solver.CrySAT,
                       Cryptol.TypeCheck.Solver.Utils,

                       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.Eval,
                       Cryptol.Testing.Exhaust,
                       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

  default-extensions:  CPP
  GHC-options:         -Wall -O2
  ghc-prof-options:    -fprof-auto -prof

  if flag(relocatable)
      cpp-options: -DRELOCATABLE

  if flag(self-contained)
    build-depends:     heredoc >= 0.2
    cpp-options:       -DSELF_CONTAINED

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
                     , containers
                     , cryptol
                     , deepseq
                     , directory
                     , filepath
                     , haskeline
                     , monadLib
                     , process
                     , random
                     , sbv
                     , tf-random
                     , transformers
  default-extensions:  CPP
  GHC-options:         -Wall -O2
  ghc-prof-options:    -auto-all -prof -rtsopts

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