name: solc
version: develop
version-script: git describe --exact-match --tags 2> /dev/null || echo "develop"
summary: The Solidity Contract-Oriented Programming Language
description: |
  Solidity is a contract-oriented, high-level language whose syntax is similar
  to that of JavaScript and it is designed to target the Ethereum Virtual
  Machine (EVM).

  Solidity is statically typed, supports inheritance, libraries and complex
  user-defined types among other features.

  It is possible to create contracts for voting, crowdfunding, blind auctions,
  multi-signature wallets and more.

base: core20
grade: stable
confinement: strict

apps:
  solc:
    command: usr/local/bin/solc
    plugs: [home]

parts:
  solidity:
    source: .
    source-type: git
    plugin: cmake
    build-packages: [build-essential, libboost-all-dev]
    stage-packages: [libicu66]
    override-build: |
      if git describe --exact-match --tags 2> /dev/null
      then
        echo -n > ../src/prerelease.txt
      fi
      snapcraftctl build
    after: [z3, cvc4]
  z3:
    source: https://github.com/Z3Prover/z3.git
    source-tag: z3-4.8.4
    plugin: make
    build-packages: [python3]
    stage-packages: [libstdc++6, libgomp1]
    override-build: |
      python3 scripts/mk_make.py
      cd build
      make -j -l $(grep -c "^processor" /proc/cpuinfo)
      make install DESTDIR=$SNAPCRAFT_PART_INSTALL
  cvc4:
    source: https://github.com/CVC4/CVC4.git
    source-tag: "1.8"
    plugin: nil
    build-packages: [python3, python3-toml, cmake, openjdk-11-jre, libgmp-dev, wget, antlr3, libantlr3c-3.4-0, libantlr3c-dev]
    override-build: |
      ./configure.sh --python3 --prefix=$SNAPCRAFT_STAGE/usr
      cd build
      make -j -l $(grep -c "^processor" /proc/cpuinfo)
      make install
      mkdir -p $SNAPCRAFT_PART_INSTALL/usr/lib/
      cp $SNAPCRAFT_STAGE/usr/lib/libcvc4.so.7 $SNAPCRAFT_PART_INSTALL/usr/lib/