packages feed

hevm-0.53.0: hevm.cabal

cabal-version: 3.0
name:
  hevm
version:
  0.53.0
synopsis:
  Symbolic EVM Evaluator
homepage:
  https://github.com/ethereum/hevm
license:
  AGPL-3.0-only
author:
  dxo, Martin Lundfall, Mikael Brockman
maintainer:
  git@d-xo.org
category:
  Ethereum
build-type:
  Simple
extra-source-files:
  CHANGELOG.md
  bench/contracts/*.sol
  test/scripts/convert_trace_to_json.sh

flag ci
  description: Sets flags for compilation in CI
  default:     False
  manual:      True

flag devel
  description: Sets flag for compilation during development
  default:     False
  manual:      True

flag debug
  description: Sets flags for compilation with extensive debug symbols and eventlog
  default:     False
  manual:      True

source-repository head
  type:     git
  location: https://github.com/ethereum/hevm.git

common shared
  if flag(ci)
    ghc-options: -Werror
  if flag(devel)
    ghc-options: -j
  if flag(debug)
    ghc-options:
      -j
      -g3
      -fdistinct-constructor-tables
      -finfo-table-map
      -eventlog
  ghc-options:
    -Wall
    -Wno-unticked-promoted-constructors
    -Wno-orphans
    -Wno-ambiguous-fields
    -optc-Wno-ignored-attributes
    -fspecialize-aggressively
    -fexpose-all-unfoldings
  default-language: GHC2021
  default-extensions:
    DuplicateRecordFields
    LambdaCase
    NoFieldSelectors
    OverloadedRecordDot
    OverloadedStrings
    OverloadedLabels
    RecordWildCards
    TypeFamilies
    ViewPatterns
    DataKinds

library
  import: shared
  exposed-modules:
    EVM,
    EVM.ABI,
    EVM.Assembler,
    EVM.Concrete,
    EVM.Dapp,
    EVM.Expr,
    EVM.SMT,
    EVM.Solvers,
    EVM.Fuzz,
    EVM.Exec,
    EVM.Format,
    EVM.Fetch,
    EVM.FeeSchedule,
    EVM.Op,
    EVM.Precompiled,
    EVM.RLP,
    EVM.Solidity,
    EVM.Stepper,
    EVM.SymExec,
    EVM.Traversals,
    EVM.CSE,
    EVM.Keccak,
    EVM.Transaction,
    EVM.Types,
    EVM.UnitTest,
    EVM.Sign,
    EVM.Effects,
  other-modules:
    Paths_hevm
  autogen-modules:
    Paths_hevm
  if impl(ghc >= 9.4) && !os(darwin)
    -- darwin is skipped because it produces this error when building
    -- > ghc: loadArchive: Neither an archive, nor a fat archive: `/nix/store/l3lkdfm7sg1wwc850451cikqds766h15-clang-wrapper-11.1.0/bin/clang++'
    build-depends: system-cxx-std-lib
  elif !os(darwin)
    extra-libraries: stdc++
  else
    -- extra-libraries: c++
    -- https://gitlab.haskell.org/ghc/ghc/-/issues/11829
    ld-options: -Wl,-keep_dwarf_unwind
    ghc-options: -fcompact-unwind
  extra-libraries:
    secp256k1, ff, gmp
  c-sources:
    ethjet/tinykeccak.c, ethjet/ethjet.c
  cxx-sources:
    ethjet/ethjet-ff.cc, ethjet/blake2.cc
  cxx-options:
    -std=c++0x
  install-includes:
    ethjet/tinykeccak.h, ethjet/ethjet.h, ethjet/ethjet-ff.h, ethjet/blake2.h
  build-depends:
    QuickCheck                        >= 2.13.2 && < 2.15,
    Decimal                           >= 0.5.1 && < 0.6,
    containers                        >= 0.6.0 && < 0.7,
    deepseq                           >= 1.4.4 && < 1.5,
    time                              >= 1.11 && < 1.14,
    transformers                      >= 0.5.6 && < 0.6,
    tree-view                         >= 0.5 && < 0.6,
    abstract-par                      >= 0.3.3 && < 0.4,
    aeson                             >= 2.0.0 && < 2.2,
    bytestring                        >= 0.11.3.1 && < 0.12,
    scientific                        >= 0.3.6 && < 0.4,
    binary                            >= 0.8.6 && < 0.9,
    text                              >= 1.2.3 && < 2.1,
    unordered-containers              >= 0.2.10 && < 0.3,
    vector                            >= 0.12.1 && < 0.14,
    base16                            >= 0.3.2.0 && < 0.3.3.0,
    megaparsec                        >= 9.0.0 && < 10.0,
    mtl                               >= 2.2.2 && < 2.3,
    directory                         >= 1.3.3 && < 1.4,
    filepath                          >= 1.4.2 && < 1.5,
    cereal                            >= 0.5.8 && < 0.6,
    cryptonite                        >= 0.30 && < 0.31,
    memory                            >= 0.16.0 && < 0.20,
    data-dword                        >= 0.3.1 && < 0.4,
    free                              >= 5.1.3 && < 5.2,
    haskeline                         >= 0.8.0 && < 0.9,
    process                           >= 1.6.5 && < 1.7,
    optics-core                       >= 0.4.1 && < 0.5,
    optics-extra                      >= 0.4.2.1 && < 0.5,
    optics-th                         >= 0.4.1 && < 0.5,
    aeson-optics                      >= 1.2.0.1 && < 1.3,
    monad-par                         >= 0.3.5 && < 0.4,
    async                             >= 2.2.4 && < 2.3,
    multiset                          >= 0.3.4 && < 0.4,
    operational                       >= 0.2.3 && < 0.3,
    optparse-generic                  >= 1.3.1 && < 1.5,
    pretty-hex                        >= 1.1 && < 1.2,
    quickcheck-text                   >= 0.1.2 && < 0.2,
    restless-git                      >= 0.7 && < 0.8,
    rosezipper                        >= 0.2 && < 0.3,
    temporary                         >= 1.3 && < 1.4,
    witherable                        >= 0.3.5 && < 0.5,
    wreq                              >= 0.5.3 && < 0.6,
    regex-tdfa                        >= 1.2.3 && < 1.4,
    base                              >= 4.9 && < 5,
    here                              >= 1.2.13 && < 1.3,
    smt2-parser                       >= 0.1.0.1,
    word-wrap                         >= 0.5 && < 0.6,
    spool                             >= 0.1 && < 0.2,
    stm                               >= 2.5.0 && < 2.6.0,
    spawn                             >= 0.3 && < 0.4,
    filepattern                       >= 0.1.2 && < 0.2,
    witch                             >= 1.1 && < 1.3,
    unliftio-core                     >= 0.2.1.0
  if !os(windows)
    build-depends:
      brick                           >= 1.4 && < 2.0,
      vty                             >= 5.37 && < 5.39
  hs-source-dirs:
    src

executable hevm
  import: shared
  hs-source-dirs:
    cli
  main-is:
    cli.hs
  ghc-options: -threaded -with-rtsopts=-N
  other-modules:
    Paths_hevm
  if os(darwin)
    extra-libraries: c++
  build-depends:
    QuickCheck,
    aeson,
    async,
    base,
    base16,
    binary,
    brick,
    bytestring,
    containers,
    cryptonite,
    data-dword,
    deepseq,
    directory,
    filepath,
    free,
    hevm,
    memory,
    mtl,
    optparse-generic,
    operational,
    process,
    quickcheck-text,
    regex-tdfa,
    temporary,
    text,
    unordered-containers,
    vector,
    vty,
    stm,
    spawn,
    optics-core,
    githash                       >= 0.1.6 && < 0.2,
    witch,
    unliftio-core
  if os(windows)
    buildable: False

--- Test Helpers ---

common test-base
  import: shared
  hs-source-dirs:
    test
  other-modules:
    Paths_hevm
  autogen-modules:
    Paths_hevm
  build-depends:
    HUnit >= 1.6,
    QuickCheck,
    quickcheck-instances,
    aeson,
    base,
    base16,
    binary,
    containers,
    directory,
    bytestring,
    filemanip,
    filepath,
    here,
    hevm,
    mtl,
    data-dword,
    process,
    tasty >= 1.0,
    tasty-hunit >= 0.10,
    tasty-quickcheck >= 0.9,
    tasty-expected-failure >= 0.12,
    temporary,
    text,
    regex-tdfa,
    regex,
    time,
    array,
    vector,
    tasty-bench,
    stm >= 2.5.0,
    spawn >= 0.3,
    witherable,
    smt2-parser >= 0.1.0.1,
    operational,
    optics-core,
    optics-extra,
    witch,
    unliftio-core,
    exceptions,
    MissingH

library test-utils
  import:
    test-base
  exposed-modules:
    EVM.Test.Utils
    EVM.Test.Tracing
    EVM.Test.BlockchainTests
  if os(windows)
    buildable: False

common test-common
  import:
    test-base
  if flag(devel)
    ghc-options: -threaded -with-rtsopts=-N
  build-depends:
    test-utils
  other-modules:
    EVM.Test.Utils
    EVM.Test.Tracing
    EVM.Test.BlockchainTests
  if os(windows)
    buildable: False
  if os(darwin)
    extra-libraries: c++

--- Test Suites ---

test-suite test
  import:
    test-common
  type:
    exitcode-stdio-1.0
  main-is:
    test.hs

-- these tests require network access so we split them into a separate test
-- suite to make it easy to skip them when running nix-build
test-suite rpc-tests
  import:
    test-common
  type:
    exitcode-stdio-1.0
  main-is:
    rpc.hs

test-suite ethereum-tests
  import:
    test-common
  type:
    exitcode-stdio-1.0
  main-is:
    BlockchainTests.hs

--- Benchmarks ---

benchmark bench
  import: shared
  type:
    exitcode-stdio-1.0
  main-is:
    bench.hs
  hs-source-dirs:
    bench
  ghc-options:
    -O2
  if os(darwin)
    extra-libraries: c++
  other-modules:
    Paths_hevm
  autogen-modules:
    Paths_hevm
  build-depends:
    base,
    tasty-bench,
    tasty,
    bytestring,
    text,
    hevm,
    here,
    test-utils,
    filemanip,
    filepath,
    containers,
    mtl,
    unliftio-core